社区
界面
帖子详情
CreateWindow和CreateDialog创建出来的HWND的本质区别是什么?
u010941421
2013-06-04 05:41:14
创建Dialog的时候可以指定一个资源ID,根据那个ID来创建一个对话框。当然对话框程序也可以有菜单什么的.
那么问题来了,创建一个普通的CreateWindow和CreateDialog之间的本质区别是什么? CreateDialog是对CreateWindow的包装吗,还是这两个API创建的东西会有一些不同?
...全文
203
3
打赏
收藏
CreateWindow和CreateDialog创建出来的HWND的本质区别是什么?
创建Dialog的时候可以指定一个资源ID,根据那个ID来创建一个对话框。当然对话框程序也可以有菜单什么的. 那么问题来了,创建一个普通的CreateWindow和CreateDialog之间的本质区别是什么? CreateDialog是对CreateWindow的包装吗,还是这两个API创建的东西会有一些不同?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yjryym
2014-03-31
打赏
举报
回复
对话框的WM_CREATE被封装了,用来创建控件。
u010941421
2013-06-04
打赏
举报
回复
CreateDialog不会产生WM_CREATE吗?
yaozhiyong110
2013-06-04
打赏
举报
回复
CreateDialog函数用CreateWindowEx函数来创建对话框。然后CreateDialog函数把一个WM_INITDIALOG消息(如果模板指定DS_SETFONT类型,则加上一个WM_SETFONT消息)传送到对话框应用程序。如果模板指定WS_VISIBLE风格,则函数显示对话框,最后CreateDlalog返回指向对话框的窗口句柄。CreateDialog函数返回之后,应用程序通过Showwindow函数显示对话框(如果还没有显示)。应用程序通过利用DestroyWindow函数来清除对话框
RINGSDK包含界面库和图象库。
RINGSDK包含界面库和图象库。 本项目为编译环境为VC6,需要先安装platform sdk.不断修改中,会陆续上传其他相关文档及DEMO 设置: VC6菜单tools->Options,选择Directoris页,把include,lib目录加入到相应文件列表,如果要调试,需要把libsrc目录下的各个子目录加入到Source files文件列表中。 工程依赖几个第三方库,需要先编译livsrc\free_lib下几个目录的工程,然后打开ringsdk.dsw编译。工程都已经设置好了,编译即可。 由于VC的智能提示不能识别界面库里的宏,因此建议安装VA(Visual.Assist)
创建
基于RingSDK的工程: 新建一个Win32 Application的工程,不要让VC写任何代码,空的工程。然后选择菜单Project->settings..., 选择C/C++页,Category选择Code Generation,然后在Use run-time library选择: DEBUG选择Debug Multithreaded RELEASE选择MultiThreaded 工程设置完毕,然后可以加入CPP和H文件了。 类库使用: 1、头文件: 头文件包含"ringmain.h"就可以,如果要使用图象库,还需要包含"ringdib.h" 2、窗口类声明: 窗口定义为如下格式: BEGIN_SETUP
WINDOW
(窗口名,窗口类型) BINNDID(对话框ID) //当窗口类型是对话框才需要写这个宏,且是可选的,即不写也可以 BEGIN_DEF_VAR(初始化标记) //这里定义类成员数据 END_DEF_VAR //这里定义类成员函数 //定义窗口消息处理函数 BEGIN_DEFMSG DEFMSG(消息代码) DEFMSGEX(自定义消息处理函数名) ... DEFCMD(命令处理函数名) ... DEFNOTIFY(通知消息代码) END_DEFMSG(窗口名) END_SETUP
WINDOW
(窗口名) 这里对上面代码中的中文进行说明: 窗口名:窗口名同时也是该窗口类的对象名,比如窗口名为Main
Window
,则该窗口类名为RingWnd_Main
Window
, 同时声明了RingWnd_Main
Window
* Main
Window
=NULL; 以后只要调用Main
Window
= NewRingObj(Main
Window
);然后Main
Window
就可以使用了。 以上代码相当于: class RingWnd_Main
Window
{ ... } RingWnd_Main
Window
* Main
Window
=NULL; 类名可以用RINGCLASS(窗口名)宏来得到 窗口类型:为IS_
WINDOW
,IS_MDIFRAME,IS_MDICHILD,IS_
DIALOG
,IS_PROPPAGE,IS_PROPSHEET这几个值之一,一看名称就知道,不需要多讲了。 其实这个只是声明了窗口类是从哪个类继承。 初始化标记:为NEED_INIT和NO_INIT两个值之一,指定了是否需要成员数据的初始化,一般成员数据的初始化可以在WM_
CREATE
消息里完成, 如果需要事先初始化,可以指定NEED_INIT,但是需要在CPP文件实现一个INIT
WINDOW
(窗口名)的函数,进行初始化。 这个BEGIN_DEF_VAR(初始化标记)和END_DEF_VAR是可选的,即可以不写这两个宏,一样可以声明成员数据或函数。 消息代码:窗口消息代码,例:WM_
CREATE
自定义消息处理函数名:响应自定义消息的处理函数,这个可以随便取名,例:OnCustomMessage 命令处理函数名:响应菜单命令或控件命令的处理函数,这个可以随便取名,例:OnOpenFile,OnButton1Click 通知消息代码:控件的通知消息代码,例:LVN_SELECTCHANGE 对话框ID:当窗口类型是对话框才需要写这个宏,且是可选的,即不写也可以。写了这句,对话框
创建
时可以不写参数,例: BEGIN_SETUP
WINDOW
(DlgAbout,IS_
DIALOG
) BINDID(IDD_ABOUT) ...
Create
Dialog
使用对话框模版资源
创建
一个非模态对话框。
Create
Dialog
调用
Create
Dialog
Param函数。 调用语序:
HWND
Create
Dialog
(HINSTANCEhInstance,LPCTSTRlpTemplate,
HWND
hWnd
Parent,DLGPROClp
Dialog
Func); 参数 hInstance类型:HINSTANCE 对话框模版所在模块的句柄。如果为NULL,则使用当前可执行文件。 lpTemplate类型:LPCTSTR 对话框模版。这个...
自定义对话框(使用
Create
Dialog
)
之所以写这篇文章,一方面是给后面的人提供一个参考,另一方面也是给自己复习。
Create
Dialog
: 从对话框模板资源中
创建
非模态对话框。 函数原型:void
Create
Dialog
(hInstance, lpName,
hWnd
Parent, lp
Dialog
Func) 第一个参数是模块句柄,一般就是输入hInstance,这个参数是窗口
创建
过程中就自动生成的。 第二个参数很重要,涉...
Create
Window
创建
对话框
2019独角兽企业重金招聘Python工程师标准>>> ...
Create
Dialog
和
Dialog
Box
INT_PTR
Dialog
Box( HINSTANCE hInstance, LPCTSTR lpTemplate,
HWND
hWnd
Parent, DLGPROC lp
Dialog
Func);这个函数根据对话框资源,
创建
一个模式对话框,这个对话框应该用End
Dialog
来结束。hInstance 当前应用程序实例句柄。lpTemplate 标识对话框模
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章