NativeWindow_02_DialogBoxParam_VC6

PS: 代码参考于<<Windows环境下32位汇编语言程序设计.chm>>,第5章,"5.4 对 话 框(2)" 。

ZC: 与CreateWindow(Ex)相比,优点在于:(1)、窗口内容 所见即所得,(2)、写一个基本窗口所用的代码比CreateWindow(Ex)少(只需要写消息回调函数)。

ZC: 与MFC相比,程序的代码少多了。

1、

创建"Win32 Application"的 空工程

PS: 下面的3个文件(WinMain_z.cpp,DialogMain.rc,resource.h),直接复制到工程目录,然后添加到工程,即可。一个简单的窗口测试程序就OK了。

2、

创建源码文件 WinMain_Z.cpp,键入如下代码:

 1 #include <windows.h>
 2 #include "resource.h"
 3 
 4 HINSTANCE g_hInstance = 0;
 5 
 6 BOOL CALLBACK ProcDialog(
 7         HWND _hWnd, // 窗口句柄
 8         UINT _uMsg, // 消息ID(identifier)
 9         WPARAM _wParam,
10         LPARAM _lParam)
11 {
12     if (WM_CLOSE == _uMsg)
13     {
14         EndDialog(_hWnd,NULL);
15     }
16     else if (WM_INITDIALOG == _uMsg)
17     {
18         //HICON hIcon = LoadIcon(g_hInstance, ICO_MAIN);
19         //SendMessage(_hWnd, WM_SETICON, ICON_BIG, hIcon);
20     }
21     else if (WM_COMMAND == _uMsg)
22     {
23         WORD wLow = LOWORD(_wParam);
24         if (IDOK == wLow)
25         {
26             EndDialog(_hWnd, NULL);
27         }
28     }
29     else
30     {
31         return false;
32     }
33     return true;
34 }
35 
36 int WINAPI WinMain(
37         HINSTANCE _hInstance,        // 当前 hInstance句柄
38         HINSTANCE _hPrevInstance,    // 之前的 hInstance句柄
39         LPSTR _lpCmdLine,            // 命令行
40         int _nCmdShow)                // 显示状态
41 {
42     g_hInstance = _hInstance;
43 
44     DialogBoxParam(_hInstance, (char*)IDD_DIALOG_MAIN, NULL, ProcDialog, NULL);
45     ExitProcess(NULL);
46     return 0;
47 }

3、

资源文件:

3.1、DialogMain_Z.rc

 1 //Microsoft Developer Studio generated resource script.
 2 //
 3 #include "resource.h"
 4 
 5 #define APSTUDIO_READONLY_SYMBOLS
 6 /////////////////////////////////////////////////////////////////////////////
 7 //
 8 // Generated from the TEXTINCLUDE 2 resource.
 9 //
10 #include "afxres.h"
11 
12 /////////////////////////////////////////////////////////////////////////////
13 #undef APSTUDIO_READONLY_SYMBOLS
14 
15 /////////////////////////////////////////////////////////////////////////////
16 // Chinese (中国) resources
17 
18 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
19 #ifdef _WIN32
20 LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
21 #pragma code_page(936)
22 #endif //_WIN32
23 
24 /////////////////////////////////////////////////////////////////////////////
25 //
26 // Dialog
27 //
28 
29 IDD_DIALOG_MAIN DIALOG DISCARDABLE  100, 100, 300, 150
30 STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | 
31     WS_CAPTION | WS_SYSMENU
32 CAPTION "主对话框"
33 FONT 10, "System"
34 BEGIN
35     DEFPUSHBUTTON   "确定",IDOK,243,6,50,14
36 END
37 
38 
39 /////////////////////////////////////////////////////////////////////////////
40 //
41 // DESIGNINFO
42 //
43 
44 #ifdef APSTUDIO_INVOKED
45 GUIDELINES DESIGNINFO DISCARDABLE 
46 BEGIN
47     IDD_DIALOG_MAIN, DIALOG
48     BEGIN
49         LEFTMARGIN, 7
50         RIGHTMARGIN, 293
51         TOPMARGIN, 6
52         BOTTOMMARGIN, 143
53     END
54 END
55 #endif    // APSTUDIO_INVOKED
56 
57 
58 #ifdef APSTUDIO_INVOKED
59 /////////////////////////////////////////////////////////////////////////////
60 //
61 // TEXTINCLUDE
62 //
63 
64 1 TEXTINCLUDE DISCARDABLE 
65 BEGIN
66     "resource.h"
67 END
68 
69 2 TEXTINCLUDE DISCARDABLE 
70 BEGIN
71     "#include ""afxres.h""
"
72     ""
73 END
74 
75 3 TEXTINCLUDE DISCARDABLE 
76 BEGIN
77     "
"
78     ""
79 END
80 
81 #endif    // APSTUDIO_INVOKED
82 
83 #endif    // Chinese (中国) resources
84 /////////////////////////////////////////////////////////////////////////////
85 
86 
87 
88 #ifndef APSTUDIO_INVOKED
89 /////////////////////////////////////////////////////////////////////////////
90 //
91 // Generated from the TEXTINCLUDE 3 resource.
92 //
93 
94 
95 /////////////////////////////////////////////////////////////////////////////
96 #endif    // not APSTUDIO_INVOKED

3.2、resource.h

 1 //{{NO_DEPENDENCIES}}
 2 // Microsoft Developer Studio generated include file.
 3 // Used by DialogMain.rc
 4 //
 5 #define IDD_DIALOG_MAIN                 101
 6 
 7 // Next default values for new objects
 8 // 
 9 #ifdef APSTUDIO_INVOKED
10 #ifndef APSTUDIO_READONLY_SYMBOLS
11 #define _APS_NEXT_RESOURCE_VALUE        102
12 #define _APS_NEXT_COMMAND_VALUE         40001
13 #define _APS_NEXT_CONTROL_VALUE         1000
14 #define _APS_NEXT_SYMED_VALUE           101
15 #endif
16 #endif

ZC: 在最后 RebuildAll 的时候,resource.h文件 会报错:“... ... esource.h(16) : fatal error RC1004: unexpected end of file found”

ZC: 解决 : 在 resource.h文件 的最后多打几个回车 再 RebuildAll 就OK了。

X

原文地址:https://www.cnblogs.com/cppskill/p/5222033.html