mfc注册窗口类以及findwindow按窗口类名查询

mfc注册窗口类以及findwindow按窗口类名查询

ID:15004104

大小:37.00 KB

页数:4页

时间:2018-07-31

mfc注册窗口类以及findwindow按窗口类名查询_第1页
mfc注册窗口类以及findwindow按窗口类名查询_第2页
mfc注册窗口类以及findwindow按窗口类名查询_第3页
mfc注册窗口类以及findwindow按窗口类名查询_第4页
资源描述:

《mfc注册窗口类以及findwindow按窗口类名查询》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MFC注册窗口类以及FindWindow按窗口类名查询分类:经验2011-07-1416:142033人阅读评论(2)收藏举报mfcdialogsearchbuttonclass编译器呵呵,最近在研究SendMessage函数,其中需要用到m_hWnd,之后延伸着又尝试获得窗口的句柄,于是遇到了FindWindow函数,原型如下:HWNDFindWindow( LPCSTRlpClassName,//输入窗口的类名,其实需要是注册过的类名才行,否则是要报错或者查找失败的。 LPCSTRlpWindowName,//输入窗口的名称,就是窗口上面蓝色的那行玩意儿写的字。);

2、对于这个函数,如果按照窗口的名称查找,相信大家都非常简单,因为名称在rc文件里,是已经注册过的了(具体的待会给大家贴代码就能看明白了)。但如果大家使用我们自己定义的窗口名称查询,则往往会失败,甚至是报错!尤其是在使用SendMessage告知另一个窗口退出时,会导致内存泄露!对于这样的情况,编译器不一定能告诉各位,所以,如果没有亲自注册窗口类的经验的话,建议大家如果要使用FindWindow函数获得窗口句柄的话,尽量通过窗口的名称查询。言归正传,出现之前的那种严重情况的原因,是在于MFC并没有一个一个帮大家将我们派生的窗口类进行注册,而是使用的默认窗口类的方式,具体渊源

3、似乎俺也说不大清楚(嘿嘿,见笑了。。。),咱只能引用这一段话:“在早期的MFC中(MFC4.0之前的版本)提供了大量的预定以的窗口类,但这些窗口类在默认下已经不再被提供了,因为涉及到多版本的技术问题(多个版本的MFC加载在同一个地址空间),如涉及到的一个实际的问题就是MFC应用程序和OLE控件都会用到MFC的DLLs。”而默认的窗口类,一般类名都是“#32770(Dialog)”,这个大家通过Spy++检测窗口的时候就可以看到。拿我这边的一个小程序为例:默认的类名是#32770(Dialog)而红线之前的,就是“注册”过的窗口的名称,这个是MFC自动做了的。那么,我们能

4、使用这个默认类名进行操作么?嘿嘿~大家试试嘛···所有的未注册窗口似乎都是这个类名哦。。。。OK,返回话题,既然默认是这样的,那么如何修改呢?这个咱参阅了这位大大的文章:http://hi.baidu.com/iwangkun/blog/item/97fc18d5ef59dfc251da4b21.html由于是英文的,可能有的朋友会望而生畏,所以,咱把自己的心得以及经验总结一下,翻译出来吧:首先,请用记事本或写字本的模式,打开需要注册窗口的工程目录下的rc资源文件(各个朋友,建议大家先将工程备份一份,因为错误的修改,很容易导致整个工程出错哦!)。这个时候,请找到我们要注

5、册的窗口的数据位置,这个很好找的:因为每一个窗口的数据开始位置,都是以窗口的句柄开头的,比如我要注册的窗口类的对应句柄是IDD_CARHIRESYSTEM_DIALOG,那么打开文件后,稍微需找一下就会发现这个数据段:IDD_CARHIRESYSTEM_DIALOGDIALOGEX0,0,400,280STYLEDS_MODALFRAME

6、WS_MINIMIZEBOX

7、WS_POPUP

8、WS_VISIBLE

9、WS_CAPTION

10、WS_SYSMENUEXSTYLEWS_EX_APPWINDOWCAPTION"车辆出租系统CarHireSystem"FONT9,"宋体",

11、0,0,0x1BEGINCOMBOBOXIDC_COMBO_CHANCE,23,35,83,95,CBS_DROPDOWNLIST

12、CBS_SORT

13、WS_VSCROLL

14、WS_TABSTOPEDITTEXTIDC_EDIT_SEARCH,125,33,83,15,ES_AUTOHSCROLLDEFPUSHBUTTON"查询",IDC_BUTTON_SEARCH,219,29,50,25........等等END如上所示,那么,我们接下来所要做事情,便是添加我们对窗口类的注册信息,即:IDD_CARHIRESYSTEM_DIALOGDIALOGEX0,0,400,280

15、STYLEDS_MODALFRAME

16、WS_MINIMIZEBOX

17、WS_POPUP

18、WS_VISIBLE

19、WS_CAPTION

20、WS_SYSMENUEXSTYLEWS_EX_APPWINDOWCAPTION"车辆出租系统CarHireSystem"CLASS"CCarHireSystemDlg"//""双引号内的类名,可以随意,但注意一定要写对哦,后面还要用到的。FONT9,"宋体",0,0,0x1BEGINCOMBOBOXIDC_COMBO_CHANCE,23,35,83,95,CBS_DROPDOWNLIST

21、CBS_SORT

22、WS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。