win32开发(对话框启动)
2017-12-21 08:14
190 查看
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
有过mfc开发经验的朋友都知道,在mfc下面有三种app开发的方式,它分别是mdi开发、sdi开发和dialog based开发。尤其是最后一种,这种基于对话框的开发方法常常用来进行简单工具的开发工作。那么,疑问来了,是不是可以用纯win32进行对话框的基本开发呢?答案是肯定,下面我们就来看一下怎么可以达到这一点。
大家如果还有印象的话,传统win32 app的开发流程是这样的,首先注册一个WNDCLASSEX,接着创建窗口,最后就是接收消息、处理消息,所有消息都是在wndProc里面解决。那对话框怎么弄呢,其实更简单,它除了不再需要注册WNDCLASSEX之外,剩下来的流程都是一样的,
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
MSG msg;
HWND hWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), NULL, (DLGPROC)About);
ShowWindow(hWnd, nCmdShow);
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
从代码中,大家可以发现,基于对话框的开发更简单。整个流程就是两个部分,一个是创建对话框,另外一个是获取消息、处理消息。那么消息在什么地方处理呢?其实就在CreateDialog里面注册的函数指针About这里处理,
// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
PostQuitMessage(0);
break;
}
return FALSE;
}
对话框没有实现什么功能,主要就是对WM_INITDIALOG和WM_COMMAND两个消息进行处理。当然,如果大家需要在对话框里面添加什么控件的话,只需要在About填上对应的消息处理逻辑就可以了。
从上面的代码来看,基于对话框的应用开发其实也不复杂。只是大家mfc用多了,自身对工具和平台产生了依赖。从个人发展来说,这其实是很不利的。win32开发虽然花的时间多了一些,但是对原理和流程可以理解得很透彻,这一点是mfc比不了的。
有过mfc开发经验的朋友都知道,在mfc下面有三种app开发的方式,它分别是mdi开发、sdi开发和dialog based开发。尤其是最后一种,这种基于对话框的开发方法常常用来进行简单工具的开发工作。那么,疑问来了,是不是可以用纯win32进行对话框的基本开发呢?答案是肯定,下面我们就来看一下怎么可以达到这一点。
大家如果还有印象的话,传统win32 app的开发流程是这样的,首先注册一个WNDCLASSEX,接着创建窗口,最后就是接收消息、处理消息,所有消息都是在wndProc里面解决。那对话框怎么弄呢,其实更简单,它除了不再需要注册WNDCLASSEX之外,剩下来的流程都是一样的,
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
MSG msg;
HWND hWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), NULL, (DLGPROC)About);
ShowWindow(hWnd, nCmdShow);
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
从代码中,大家可以发现,基于对话框的开发更简单。整个流程就是两个部分,一个是创建对话框,另外一个是获取消息、处理消息。那么消息在什么地方处理呢?其实就在CreateDialog里面注册的函数指针About这里处理,
// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
PostQuitMessage(0);
break;
}
return FALSE;
}
对话框没有实现什么功能,主要就是对WM_INITDIALOG和WM_COMMAND两个消息进行处理。当然,如果大家需要在对话框里面添加什么控件的话,只需要在About填上对应的消息处理逻辑就可以了。
从上面的代码来看,基于对话框的应用开发其实也不复杂。只是大家mfc用多了,自身对工具和平台产生了依赖。从个人发展来说,这其实是很不利的。win32开发虽然花的时间多了一些,但是对原理和流程可以理解得很透彻,这一点是mfc比不了的。
相关文章推荐
- 学习win32 API开发8-对话框
- 跟我一起玩Win32开发(13):握手对话框
- 跟我一起玩Win32开发(18):使用对话框的两个技巧
- 跟我一起玩Win32开发(14):用对话框作为主窗口
- Windows Mobile下使用Native C++(WTL, MFC, Win32)开发,如何为对话框加入菜单
- win32 dll工程开发创建对话框
- win32 SDK开发中打开 保存文件对话框的使用
- Win32 SDK开发中对话框控件消息处理
- 跟我一起玩Win32开发(17):启动和结束进程
- Android系统开发小问题-启动过程中android字符没有显示出来 .
- iOS开发 对话框UIActionSheet和UIAlertView用法
- win32开发环境下调试opencv程序的一些技巧
- 【1】创建coco2d-x win32开发环境
- PC Camera 开发日志(六)------ 一种可换皮肤的对话框实现
- Windows Mobile开发启动模拟器时,得到错误 0x80070070: There is not enough space on the disk
- spring boot 开发环境禁止热启动
- ios开发-自定义启动画面Default.png加载时间
- 基于对话框的MFC程序启动后自动隐藏对话框
- [开发] 四种程序启动画面的制作方法(VC)
- Android开发 静默安装,避免了更新安装的时候跳出的对话框,后台安装