Creating Dialogbased Windows Application (3) / 创造基于对话框的Windows应用程序(三卡塔尔Checkbox的运用、窗体置顶、设置Logo

19、在被调用的下令新闻响应函数(Dlg_OnCommand卡塔尔国中加多对新添控件的响应操作。

2020欧洲杯官方投注-2020欧洲杯官方投注网址 1

2020欧洲杯官方投注-2020欧洲杯官方投注网址 2

21、定义对话框的初叶化音讯响应函数(Dlg_OnInitDialog卡塔尔,并在对话框的回调函数(Dlg_Proc卡塔尔中运用上风姿洒脱节的宏替换调用该函数。

 2020欧洲杯官方投注-2020欧洲杯官方投注网址 3

23、这时候再按下F5 Start Debugging,能够窥见“On Top”复选框默许被点选,同期对话框已被置顶,对话框左上角以致.exe文件现身了大家增添的Logo。

20、那时候按下F5 Start Debugging,再点击“On Top”复选框,能够发现对话框已被置顶,再一次点击则撤消。

始建基于对话框的Windows应用程序(三卡塔尔 —— Checkbox的运用、窗体置顶、设置Logo

2020欧洲杯官方投注-2020欧洲杯官方投注网址 4

 2020欧洲杯官方投注-2020欧洲杯官方投注网址 5

18、右键选中的控件点击Propertise校订相关内容。

22、在伊始化音信响应函数(Dlg_OnInitDialog卡塔尔中,我们还足以为对话框设置Logo。

17、首先切换成Reasource View(Ctrl+Shift+E卡塔 尔(阿拉伯语:قطر‎,找到待修正的主窗体,并从Toolbox(Ctrl+Atl+X卡塔尔国中增多Checkbox控件如下:

其中HWND_2020欧洲杯官方投注-2020欧洲杯官方投注网址,TOPMOST将使窗体具有置顶属性。

接下去思考让对话框暗许具有置顶属性,相同的时候“On Top”复选框暗中同意被点选。

2020欧洲杯官方投注-2020欧洲杯官方投注网址 6

————————————————

2020欧洲杯官方投注-2020欧洲杯官方投注网址 7

本文为本身原创,转发请注解出处。

2020欧洲杯官方投注-2020欧洲杯官方投注网址 82020欧洲杯官方投注-2020欧洲杯官方投注网址 9

Win32WindowsApplication.cpp

 2020欧洲杯官方投注-2020欧洲杯官方投注网址 10

2020欧洲杯官方投注-2020欧洲杯官方投注网址 11

 1 #include <Windows.h>
 2 #include <windowsx.h>
 3 #include <tchar.h>
 4 #include "Resource.h"
 5 
 6 // Sets the dialog box icons
 7 inline void chSETDLGICONS(HWND hWnd, int idi) {
 8     SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)
 9         LoadIcon((HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
10             MAKEINTRESOURCE(idi)));
11     SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)
12         LoadIcon((HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
13             MAKEINTRESOURCE(idi)));
14 }
15 
16 // The normal HANDLE_MSG macro in WindowsX.h does not work properly for dialog
17 // boxes because DlgProc returns a BOOL instead of an LRESULT (like
18 // WndProcs). This chHANDLE_DLGMSG macro corrects the problem:
19 #define chHANDLE_DLGMSG(hWnd, message, fn)                 
20    case (message): return (SetDlgMsgResult(hWnd, uMsg,     
21       HANDLE_##message((hWnd), (wParam), (lParam), (fn))))
22 
23 INT_PTR WINAPI NewDlg_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
24     switch (uMsg)
25     {
26     case WM_CLOSE:
27         EndDialog(hWnd, 0);
28         break;
29     }
30 
31     return(FALSE);
32 }
33 
34 void Dlg_OnCommand(HWND hWnd, int id, HWND hWndCtl, UINT codeNotify) {
35     switch (id) {
36     case IDC_CHECKONTOP:
37         SetWindowPos(hWnd, IsDlgButtonChecked(hWnd, IDC_CHECKONTOP)
38             ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
39         break;
40     case IDNEW:
41         DialogBoxParam(NULL, MAKEINTRESOURCE(IDD_NEWDIALOG),
42             hWnd, NewDlg_Proc, NULL);
43         break;
44     case IDCANCEL:
45         SendMessage(hWnd, WM_CLOSE, 0, 0);
46         break;
47 
48     }
49 }
50 
51 BOOL Dlg_OnInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam) {
52     chSETDLGICONS(hWnd, IDI_ICON1);
53 
54     SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
55     CheckDlgButton(hWnd, IDC_CHECKONTOP, BST_CHECKED);
56 
57     return(TRUE);
58 }
59 
60 INT_PTR WINAPI Dlg_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
61     switch (uMsg)
62     {
63         chHANDLE_DLGMSG(hWnd, WM_INITDIALOG, Dlg_OnInitDialog);
64         chHANDLE_DLGMSG(hWnd, WM_COMMAND, Dlg_OnCommand);
65     case WM_CLOSE:
66         EndDialog(hWnd, 0);
67         break;
68     }
69 
70     return(FALSE);
71 }
72 
73 int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {
74     DialogBoxParam(hinstExe, MAKEINTRESOURCE(IDD_DIALOG),
75         NULL, Dlg_Proc, _ttoi(pszCmdLine));
76 
77     return(0);
78 }

 2020欧洲杯官方投注-2020欧洲杯官方投注网址 12

 2020欧洲杯官方投注-2020欧洲杯官方投注网址 13

  上焕发青新春创立的窗体应用程序中,大家用到了Button和StaticText那五个控件。那风流倜傥节中我们将学习运用Checkbox控件,并促成将窗体置顶和设置Logo的效果与利益。

 

本文由2020欧洲杯官方投注-2020欧洲杯官方投注网址发布于win7,转载请注明出处:Creating Dialogbased Windows Application (3) / 创造基于对话框的Windows应用程序(三卡塔尔Checkbox的运用、窗体置顶、设置Logo

相关阅读