MFC
文章平均质量分 50
mengxingxia
这个作者很懒,什么都没留下…
展开
-
MFC导出对话框类(带资源)
如果mfc想导出一个功能完整的对话框(类似于系统自带的打开文件),有时候会创建失败,或者在DoDataExchange函数内断言中断,提示找不到某控件资源。这是因为dll加载后,mfc把resourcehandle设置为exe的句柄,创建dll对话框时搜索的也是exe的资源,当然找不到了。起始解决的方法非常简单,加入你的dll名称为dlg.dll。只要在对话框创建的位置添加如下代码。void Cra原创 2017-07-12 10:50:32 · 2851 阅读 · 0 评论 -
CListBox创建控件大小自动变化
CListBox手动创建的窗口,添加string后。 如果SetItemHeight大小总是和MoveWindow后的大小不符,总是会变小;如果不调用SetItemHeight则无此问题。巨坑啊。实际上解决此问题的方法非常简单,只要加上如下属性即可:LBS_NOINTEGRALHEIGHTmsdn对LBS_NOINTEGRALHEIGHT的解释如下: LBS_NOINTEGRALHEIGHT原创 2017-07-04 15:37:52 · 818 阅读 · 0 评论 -
对话框窗口不刷新,不进入OnPaint(不进WM_PAINT)
MFC对话框程序,不知道改了什么对话框总是不刷新,后来用spy++查看,能看到窗口。 首先考虑的是,不小心加了layeredout属性,后来查看没有。 再次考虑到是不是wm_paint消息被过滤了,在PreTranslateMessage里面下断点发现是可以收到WM_PAINT消息的,后来调试跟进,发现![代码堆栈](http://img.blog.csdn.net/20170706111335原创 2017-07-06 11:09:55 · 2798 阅读 · 0 评论 -
MFC/VC DLL导出对话框,焦点混乱问题
vs创建dll,然后在dll里面创建对话框,并通过导出函数的方式创建时,会碰到各种各样的问题。比如edit控件获取不了焦点,无法输入;子对话框无法移动;各种button的焦点混乱等各种问题。 原因分析: dll中创建的mfc对话框底层有自己的窗口map列表,exe中的某些消息有可能传递不到dll中,因此需要将exe中的程序传递到dll,具体的底层原因,以后在分析加入//dll中导出函数:BOO原创 2017-07-20 09:40:13 · 712 阅读 · 0 评论 -
MFC中模式对话框在OnInitDialog中移动大小无效,自动居中
对于模式对话框: 在WM_INITDIALOG或者CDialog::OnInitDialog中调用MoveWindow无效,对话框自动居中。调用SetWindowPos则能按照预想运行,目前原因不明原创 2017-07-07 13:42:51 · 1127 阅读 · 1 评论 -
GDI+计算文本矩形区域
因为GDIPlus不支持类似CDC::DrawText中DT_CALCRECT的功能。而MeasureString又只能计算单行文本所占的宽度,特意设计此函数。 /*参数:lpRect,输入时用于指定位置和文本的最大宽度;输出时指定文本的矩形区域。nFormat,格式,采用GDI的DrawText的DTXX来控制,如果指定DT_CALCRECT则计算矩形区域,否则绘制文本。算法思路:1、原创 2017-07-05 15:04:11 · 1980 阅读 · 0 评论