前面我们在编写Win32应用程序的思路都是:
1、设计窗口类。2、注册窗口类。3、创建窗口 。……
然而,当我们接触控件以后, 会发现一个问题,我们在窗口上放置控件实在不好弄,而 资源中的对话框具有图形编辑器,操作起来相对方便。
于是,就有了一个想法:把对话框用作 主窗口,那我们在布局控件时就轻松了。
其实这想法在网上已有牛人做了,不过,人家是用 Win32汇编干的,当然,要把它变为C++就更简单了。
首先,介绍第一个法子,直接以桌面作为 父窗口来创建对话框。
1、创建一个对话框资源,界面就发挥你的设计天赋了。
2、创建 一个图标资源,既作为应用程序的图标(VS编译时会选择第一个添加到资源中的图标作为EXE的图标) ,也作为对话框的图标。
3、在代码中创建并显示对话框。
#include <Windows.h> #include "resource.h" // 开启可视化效果 #pragma comment(linker,"\"/manifestdependency:type='win32' \ name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \ processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") INT_PTR CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); HINSTANCE hgInst; int WINAPI WinMain(HINSTANCE hThisApp, HINSTANCE hPrevApp, LPSTR lpCmd, int nShow) { hgInst = hThisApp; HWND hdlg = CreateDialog(hThisApp, MAKEINTRESOURCE(IDD_MY),GetDesktopWindow(), (DLGPROC)DlgProc); if(!hdlg) { return 0; } ShowWindow(hdlg,SW_SHOW); MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } INT_PTR CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_INITDIALOG: // 设置对话框的图标 SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(hgInst, MAKEINTRESOURCE(IDI_APP))); return 0; case WM_SYSCOMMAND: if(wParam == SC_CLOSE) { PostQuitMessage(0);//退出 } return 0; } return (INT_PTR)FALSE; }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对话框
, 图标
, return
, 窗口
, msg
, 代码应用win32对话框
, win32sdkmfc对话框
, 一个
win32窗口创建
,以便于您获取更多的相关知识。