win32开发(对话框启动)

来源:互联网 发布:查看java jdk版本 编辑:程序博客网 时间:2024/05/21 04:24

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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比不了的。



原创粉丝点击