你的位置:首页 > 软件开发 > 操作系统 > Creating Dialogbased Win32 Application / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

Creating Dialogbased Win32 Application / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

发布时间:2016-09-18 16:01:33
创建基于对话框的Win32应用程序(三) —— Checkbox的应用、窗体置顶 上一节创建的窗体应用程序中,我们用到了Button和StaticText这两个控件。这一节中我们将学习使用Checkbox控件,并实现将窗体置顶的功能。1 ...

Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

创建基于对话框的Win32应用程序(三) —— Checkbox的应用、窗体置顶

 

上一节创建的窗体应用程序中,我们用到了Button和StaticText这两个控件。这一节中我们将学习使用Checkbox控件,并实现将窗体置顶的功能。

17、首先切换到Reasource View(Ctrl+Shift+E),找到待修改的主窗体,并从Toolbox(Ctrl+Atl+X)中添加Checkbox控件如下:

 Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

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

 Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

19、在被调用的命令消息响应函数(Dlg_OnCommand)中添加对新增控件的响应操作。

 Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

其中HWND_TOPMOST将使窗体具备置顶属性。

20、此时按下F5 Start Debugging,再点击“On Top”复选框,可以发现对话框已被置顶,再次点击则取消。

 Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

接下来考虑让对话框默认具备置顶属性,同时“On Top”复选框默认被点选。

21、定义对话框的初始化消息响应函数(Dlg_OnInitDialog),并在对话框的回调函数(Dlg_Proc)中利用上一节的宏替换调用该函数。

 Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

Creating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, WindowsCreating Dialogbased Win32 Application  / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows
 1 #include <Windows.h> 2 #include <windowsx.h> 3 #include <tchar.h> 4 #include "Resource.h" 5  6 // The normal HANDLE_MSG macro in WindowsX.h does not work properly for dialog 7 // boxes because DlgProc returns a BOOL instead of an LRESULT (like 8 // WndProcs). This chHANDLE_DLGMSG macro corrects the problem: 9 #define chHANDLE_DLGMSG(hWnd, message, fn)         \10  case (message): return (SetDlgMsgResult(hWnd, uMsg,   \11    HANDLE_##message((hWnd), (wParam), (lParam), (fn))))12 13 INT_PTR WINAPI NewDlg_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {14   switch (uMsg)15   {16   case WM_CLOSE:17     EndDialog(hWnd, 0);18     break;19   }20 21   return(FALSE);22 }23 24 void Dlg_OnCommand(HWND hWnd, int id, HWND hWndCtl, UINT codeNotify) {25   switch (id) {26   case IDC_CHECKONTOP:27     SetWindowPos(hWnd, IsDlgButtonChecked(hWnd, IDC_CHECKONTOP)28       ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);29     break;30   case IDNEW:31     DialogBoxParam(NULL, MAKEINTRESOURCE(IDD_NEWDIALOG),32       hWnd, NewDlg_Proc, NULL);33     break;34   case IDCANCEL:35     SendMessage(hWnd, WM_CLOSE, 0, 0);36     break;37 38   }39 }40 41 BOOL Dlg_OnInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam) {42   SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);43   CheckDlgButton(hWnd, IDC_CHECKONTOP, BST_CHECKED);44 45   return(TRUE);46 }47 48 INT_PTR WINAPI Dlg_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {49   switch (uMsg)50   {51     chHANDLE_DLGMSG(hWnd, WM_INITDIALOG, Dlg_OnInitDialog);52     chHANDLE_DLGMSG(hWnd, WM_COMMAND, Dlg_OnCommand);53   case WM_CLOSE:54     EndDialog(hWnd, 0);55     break;56   }57 58   return(FALSE);59 }60 61 int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {62   DialogBoxParam(hinstExe, MAKEINTRESOURCE(IDD_DIALOG),63     NULL, Dlg_Proc, _ttoi(pszCmdLine));64 65   return(0);66 }

原标题:Creating Dialogbased Win32 Application / 创建基于对话框的Win32应用程序(三)Checkbox的应用、窗体置顶 / Win32, VC++, Windows

关键词:Windows

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录