MFC单文档程序中,在PreCreateWindow函数中修改窗口大小无而法生效的解决办法

一、问题原型

    新建一个MFC单文档程序后,在Fram和View类中都尝试设置cs.cx和cs.cy的值,然后老天不给力,居然不起作用。

着一脸懵逼,反复调试,发现窗口不但不听程序猿的话,而且每次打开沿用上一次窗口拖动改变后的大小。

二、原因分析

     带着万分沮丧的心情找谷歌,经过多方查找终于找到蛛丝马迹了。原来VS2010会将一些信息写入注册表,这其中

包括窗口样式信息,这个和之前VS2005,VS2008(SP1除外)不太一样,默认的SDI和MDI自带的BCG的一些东

西。分析源代码,App的InitInstance函数里,是先执行pDocTemplate = new CSingleDocTemplate(

 IDR_MAINFRAME,

 RUNTIME_CLASS(CvasFasternToolDoc),

参考资源链接:[VS2010 MFC文本文档应用:文本输出与绘图实战教程](https://wenku.csdn.net/doc/3wjrrq0g3u?utm_source=wenku_answer2doc_content) 为了全面掌握在MFC文档应用程序进行窗口初始化、文本输出和图形绘制的技术细节,建议深入阅读教程《VS2010 MFC文本文档应用:文本输出与绘图实战教程》。这份教程详细讲解了从项目创建到功能实现的完整过程,是理解MFC应用程序结构的宝贵资源。 在MFC应用程序,窗口的初始化主要通过`CMainFrame::OnCreate`函数来完成。在此函数,可以设置窗口样式、创建工具栏和状态栏,并返回初始化结果。窗口类`CMainFrame`负责管理主框架窗口,包括菜栏、工具栏和状态栏的创建及消息处理。 为了进行文本输出和图形绘制,需要重写视图类`CXxxView`的`OnDraw`函数。这个函数是处理绘图消息的主要地方,在这里可以使用GDI(图形设备接口)函数来绘制文本和图形。例如,使用`CDC::TextOut`方法在视图输出文本,而使用`CPen`、`CBrush`、`CFont`等对象来设置绘图属性和绘制基本图形,如线条、矩形和椭圆。 在初始化视图时,`CXxxView::PreCreateWindow`函数允许定制窗口创建前的样式和属性,可以在这里添加特定的窗口样式标志。通过在该函数添加`WS_VISIBLE`样式,可以确保视图窗口在创建时即可见。 通过这些步骤和方法,你可以在MFC文档应用程序实现窗口的初始化、文本输出和基本图形绘制。一旦掌握了这些基础,你将能够进一步探索更高级的MFC功能,如自定义对话框、文档数据处理等。为了继续提升你的MFC编程技能,除了本教程外,还可以参考更多的专业资料和案例进行学习。 参考资源链接:[VS2010 MFC文本文档应用:文本输出与绘图实战教程](https://wenku.csdn.net/doc/3wjrrq0g3u?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值