Windows --- 模态对话框
对话框的两种模式
模态对话框:
点击打开后,如果不把下面这个窗口关掉,不能操作它后面的窗口
阻塞
非模态对话框:
模态对话框
DialogBoxA macro (winuser.h) - Win32 apps | Microsoft Docs
DLGPROC (winuser.h) - Win32 apps | Microsoft Docs
在 Windows 里面,bool 类型其实就是 int 类型,和 INT_PTR 是一样的
DLGPROC Dlgproc;INT_PTR Dlgproc(HWND unnamedParam1,UINT unnamedParam2,WPARAM unnamedParam3,LPARAM unnamedParam4
)
{...}
#include <Windows.h>
//包含头文件
#include "resource.h"//对话框窗口处理函数
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{//创建模态对话框/* 需要把整型转换成字符串类型 *//* 没有父窗口 值为 NULL */DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MainDlgProc);return 0;
}
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{/* 一定要返回 FALSE 没有处理的消息交给操作系统处理 */return FALSE;/* 不管我有没有处理 系统都不用处理 */return TRUE;
}void DialogBoxA([in, optional] hInstance, //应用程序实例句柄[in] lpTemplate, //对话框的资源模板[in, optional] hWndParent, //父窗口句柄[in, optional] lpDialogFunc //对话框窗口处理函数
);
resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ 生成的包含文件。
// 供 FirstWindow.rc 使用
//
#define IDI_MAIN 101
#define IDI_LOGO 102
#define IDC_CURSOR 103
#define IDD_MAIN_DLG 104// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 106
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
return TRUE 但是没有处理会出现下面的情况
居中显示
添加资源
选择 Dialog
点击新建对话框
按 shift + ctrl + e 打开资源视图,更改名字为 IDD_MAIN_DLG
资源 ID 统一大写,这些 ID 是一些宏定义,宏定义统一用大写
处理关闭窗口的消息 WM_CLOSE
模态对话框有专门的关闭函数 EndDialog
EndDialog function (winuser.h) - Win32 apps | Microsoft Docs
查看返回值
(Winuser.h) WM_COMMAND消息 - Win32 apps | Microsoft Docs
命令消息能够响应菜单的点击、按钮的点击以及快捷键的响应
#include <Windows.h>
#include "resource.h"//对话框窗口处理函数
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{//创建模态对话框/* 需要把整数类型转换成字符串类型 *//* 没有父窗口 值为 NULL */int nResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MainDlgProc);int n = 5;return 0;
}
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND://低位字switch (LOWORD(wParam)){//点了取消按钮case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;//点了确定按钮case IDOK:MessageBox(hWnd, L"点击确定",L"提示", MB_OK);break;}}/* 一定要返回 FALSE */return FALSE;
}
#include <Windows.h>
#include "resource.h"//对话框窗口处理函数
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{//创建模态对话框/* 需要把整数类型转换成字符串类型 *//* 没有父窗口 值为 NULL */int nResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MainDlgProc);int n = 5;return 0;
}
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){case WM_CREATE:MessageBox(hWnd, L"这是WM_CREATE消息", L"提示", MB_OK);// 对话框初始化消息case WM_INITDIALOG: // 设置对话框的标题SetWindowText(hWnd,L"这是一个对话框程序");break;// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){// 点了取消按钮case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;case IDOK:MessageBox(hWnd, L"点击确定",L"提示", MB_OK);break;}}/* 一定要返回 FALSE */return FALSE;
}
WM_CREATE 在对话框里面被 WM_INITDIALOG 接管了,对话框不再响应 WM_CREATE 消息
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){// 对话框初始化消息case WM_INITDIALOG: // 此时对话框还没有显示 但是对话框已经创建好了MessageBox(hWnd, L"初始化", L"提示", MB_OK);// 设置对话框标题 [如果对话框没有设置好 不能给对话框设置标题]SetWindowText(hWnd,L"这是一个对话框程序");break;}/* 一定要返回 FALSE */return FALSE;
}
设置对话框的图标
把图标放在工程里面
导入图标、加载图标:Windows --- 第一个Windows窗口程序_小雪菜本菜的博客-CSDN博客_窗口程序
设置图标:WM_SETICON消息 (Winuser.h) - Win32 apps | Microsoft Docs
#include <Windows.h>
#include "resource.h"//应用程序实例句柄
HINSTANCE g_hInstance; //对话框窗口处理函数
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);//hInstance在WinMain中需要把它传到窗口处理函数中 用全局变量
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{g_hInstance = hInstance;//创建模态对话框/* 需要把整数类型转换成字符串类型 *//* 没有父窗口 值为 NULL *///创建主窗口int nResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MainDlgProc);int n = 5;return 0;
}
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){case WM_CREATE:MessageBox(hWnd, L"这是WM_CREATE消息", L"提示", MB_OK);// 对话框初始化消息case WM_INITDIALOG: {// 设置对话框标题SetWindowText(hWnd, L"这是一个对话框程序");// 加载图标 返回图标句柄HICON hICON = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_MAIN));// 发送 WM_SETICON 消息// 大图标 LPARAM表示图标的句柄SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hICON);// 小图标SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hICON);break;}// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){// 点了取消按钮case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;// 点了确定按钮case IDOK:MessageBox(hWnd, L"点击确定",L"提示", MB_OK);break;}}/* 一定要返回 FALSE */return FALSE;
}
/* 强制转换为 LPCTSR */
HICON hICON = LoadIcon(g_hInstance, (LPCTSR)IDI_MAIN);
变量的命名规则
命名规则
驼峰命名法:StuManagerSystem,首字母大写
在 Windows 中采用匈牙利命名法,前缀是类型,并借鉴驼峰命名法
sz(字符数组类型)StudentName
bFind(是否找到,bool 类型返回 TRUE 或者 FALSE)
dw
a:数组
b:布尔类型
by:字节
c:字符
dw:DWORD类型
fn:函数指针
h:句柄
i 或者 n:整型
w:WORD
p:指针
sz:字符串、字符数组
m_:成员变量
g_:全局变量
设置标题
打开工具箱,添加控件
添加控件 Picture Control
登录界面的制作
添加资源
加入编辑框,选中按 ctrl 键复制一个新的控件
ctrl 键选中两个文本,点击左对齐,就可以通过小键盘↑←↓→实现对齐
顶端对齐
让它居中显示
#include <Windows.h>
#include "resource.h"//应用程序实例句柄
HINSTANCE g_hInstance; //登陆对话框处理函数
BOOL CALLBACK LoginDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);//对话框窗口处理函数
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{//创建登陆窗口DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOGIN_DLG), NULL, LoginDlgProc);g_hInstance = hInstance;//创建模态对话框/* 需要把整数类型转换成字符串类型 *//* 没有父窗口 值为 NULL *///创建主窗口int nResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MainDlgProc);return 0;
}
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){case WM_CREATE:MessageBox(hWnd, L"这是WM_CREATE消息", L"提示", MB_OK);// 对话框初始化消息case WM_INITDIALOG: {// 设置对话框标题//SetWindowText(hWnd, L"这是一个对话框程序");// 加载图标HICON hICON = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_MAIN));//发送消息//发送大图标SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hICON);//发送小图标SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hICON);break;}// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){// 点了取消按钮case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;case IDOK:MessageBox(hWnd, L"点击确定",L"提示", MB_OK);break;}}/* 一定要返回 FALSE */return FALSE;
}
BOOL CALLBACK LoginDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){//点了取消按钮 退出这个对话框case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;case IDOK:break;}}return FALSE;
}
输入用户名和密码后登陆系统
加入密码风格
GetDlgItemTextA function (winuser.h) - Win32 apps | Microsoft Docs
#include <Windows.h>
#include "resource.h"//应用程序实例句柄
HINSTANCE g_hInstance; //登陆对话框处理函数
BOOL CALLBACK LoginDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);//对话框窗口处理函数
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{//创建登陆窗口DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOGIN_DLG), NULL, LoginDlgProc);g_hInstance = hInstance;//创建模态对话框/* 需要把整数类型转换成字符串类型 *//* 没有父窗口 值为 NULL *///创建主窗口int nResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MainDlgProc);return 0;
}
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){case WM_CREATE:MessageBox(hWnd, L"这是WM_CREATE消息", L"提示", MB_OK);// 对话框初始化消息case WM_INITDIALOG: {// 设置对话框标题//SetWindowText(hWnd, L"这是一个对话框程序");// 加载图标HICON hICON = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_MAIN));//发送消息//发送大图标SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hICON);//发送小图标SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hICON);break;}// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){// 点了取消按钮case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;case IDOK:MessageBox(hWnd, L"点击确定",L"提示", MB_OK);break;}}/* 一定要返回 FALSE */return FALSE;
}
BOOL CALLBACK LoginDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){//点了取消按钮 退出、关闭当前对话框case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;// 点击登陆按钮 登陆case IDOK:{//获取控件的值/*控件的值如下用户名:admin密 码:123456*///字符数组存储用户名wchar_t szUsername[100];wchar_t szPassword[100];//获取对话框控件里面的文本 传入控件ID 字符串保存到szUsername 字符个数GetDlgItemText(hWnd, IDC_USERNAME, szUsername,100);GetDlgItemText(hWnd, IDC_PASSWORD, szPassword, 100);//查看是否获取成功MessageBox(hWnd,szUsername,L"提示",MB_OK);break;}}}return FALSE;
}
#include <Windows.h>
#include "resource.h"//应用程序实例句柄
HINSTANCE g_hInstance; //登陆对话框处理函数
BOOL CALLBACK LoginDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);//对话框窗口处理函数
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{g_hInstance = hInstance;//创建登陆窗口int nResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOGIN_DLG), NULL, LoginDlgProc);if (nResult == IDOK){//判断返回值 只有nResult == IDOK表示成功 再创建主窗口 //点击取消返回 IDCANCEL 不会创建主窗口DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MainDlgProc);}//创建模态对话框/* 需要把整数类型转换成字符串类型 *//* 没有父窗口 值为 NULL */return 0;
}
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){case WM_CREATE:MessageBox(hWnd, L"这是WM_CREATE消息", L"提示", MB_OK);// 对话框初始化消息case WM_INITDIALOG: {// 设置对话框标题//SetWindowText(hWnd, L"这是一个对话框程序");// 加载图标HICON hICON = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_MAIN));//发送消息//发送大图标SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hICON);//发送小图标SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hICON);break;}// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){// 点了取消按钮case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;case IDOK:MessageBox(hWnd, L"点击确定",L"提示", MB_OK);break;}}/* 一定要返回 FALSE */return FALSE;
}
BOOL CALLBACK LoginDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){//点了取消按钮 退出、关闭当前对话框case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;// 点击登陆按钮 登陆case IDOK://获取控件的值/*控件的值如下用户名:admin密 码:123456*/wchar_t szUsername[100];wchar_t szPassword[100];//获取对话框控件里面的文本 传入控件ID 字符串保存在 szUsernameGetDlgItemText(hWnd, IDC_USERNAME, szUsername,100);GetDlgItemText(hWnd, IDC_PASSWORD, szPassword, 100);//查看是否获取成功MessageBox(hWnd,szUsername,L"提示",MB_OK);/* 字符串判断wcscmpszUsername 与 admin 判断等于 0 表示相等*/if(wcscmp(szUsername,L"admin") == 0 && wcscmp(szPassword,L"123456") == 0){//成功 关闭当前登陆窗口 返回IDOK给nResult表示成功EndDialog(hWnd, IDOK);}else{//失败 提示失败MessageBox(hWnd, L"用户名或密码错误!", L"温馨提示", MB_OK);}break;}}return FALSE;
}
制作 "关于" 窗口
添加资源,弹出关于窗口
效果如下
#include <Windows.h>
#include "resource.h"//应用程序实例句柄
HINSTANCE g_hInstance; //登陆对话框处理函数
BOOL CALLBACK LoginDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);//对话框窗口处理函数
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);//关于对话框处理函数
BOOL CALLBACK AboutDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{g_hInstance = hInstance;//创建登陆窗口int nResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOGIN_DLG), NULL, LoginDlgProc);if (nResult == IDOK){//判断返回值 只有nResult == IDOK表示成功 再创建主窗口 //点击取消返回 IDCANCEL 不会创建主窗口 直接退出 只能输入正确的密码才会进入主窗口DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MainDlgProc);}//创建模态对话框/* 需要把整数类型转换成字符串类型 *//* 没有父窗口 值为 NULL */return 0;
}
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){case WM_CREATE:MessageBox(hWnd, L"这是WM_CREATE消息", L"提示", MB_OK);// 对话框初始化消息case WM_INITDIALOG: {// 设置对话框标题//SetWindowText(hWnd, L"这是一个对话框程序");// 加载图标HICON hICON = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_MAIN));//发送消息//发送大图标SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hICON);//发送小图标SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hICON);break;}// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){// 点了取消按钮case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;case IDOK:MessageBox(hWnd, L"点击确定",L"提示", MB_OK);break;//在主窗口的窗口处理函数中处理关于按钮case IDC_ABOUT:DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_ABOUT_DLG), NULL, AboutDlgProc);break;}}/* 一定要返回 FALSE */return FALSE;
}
BOOL CALLBACK LoginDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){// 窗口关闭消息case WM_CLOSE:EndDialog(hWnd, IDCANCEL);break;// 命令消息case WM_COMMAND:switch (LOWORD(wParam)){//点了取消按钮 退出、关闭当前对话框case IDCANCEL:EndDialog(hWnd, IDCANCEL);break;// 点击登陆按钮 登陆case IDOK://获取控件的值/*控件的值如下用户名:admin密 码:123456*/wchar_t szUsername[100];wchar_t szPassword[100];//获取对话框控件里面的文本 传入控件ID 字符串保存在 szUsernameGetDlgItemText(hWnd, IDC_USERNAME, szUsername,100);GetDlgItemText(hWnd, IDC_PASSWORD, szPassword, 100);//查看是否获取成功MessageBox(hWnd,szUsername,L"提示",MB_OK);/* 字符串判断 szUsername 与 admin 判断等于 0 表示相等*/if(wcscmp(szUsername,L"admin") == 0 && wcscmp(szPassword,L"123456") == 0){//成功 关闭当前登陆窗口EndDialog(hWnd, IDOK);}else{//失败MessageBox(hWnd, L"用户名或密码错误!", L"温馨提示", MB_OK);}break;}}return FALSE;
}
BOOL CALLBACK AboutDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){// 关闭窗口case WM_CLOSE:EndDialog(hWnd, IDCANCEL);// IDOK和IDCANCEL都是关闭窗口case WM_COMMAND:switch (wParam){case IDOK:case IDCANCEL:EndDialog(hWnd,IDCANCEL);break;}}return FALSE;
}
Windows --- 模态对话框相关推荐
- Windows SDK 非模态对话框的消息处理
在SDK中使用非模态对话框时的几个问题: 1.为什么要调用IsDialogMessage?? 2.非模态对话框与主窗口有什么区别? 3.如果不调用IsDialogMessage,消息能不能传递到对话框 ...
- 变分模态分解_Android小部件示例中的模态对话框(弹出)
变分模态分解 在此示例中,我们将看到如何在主屏幕中创建一个可以打开弹出对话框的Android小部件. 如您所知,Android Widgets是小型应用程序,基本上可以做两件事. 按下时启动新的活动, ...
- 对话框编程之非模态对话框 [04]
1.在主对话框中创建一个新的按钮.并添加单击事件代码如下: void CMfc测试项目Dlg::OnBnClickedCreateNomodul() {// TODO: 在此添加控件通知处理程序代码C ...
- c#中的模态对话框和非模态对话框
模态对话框 弹出窗口阻止调用窗口的所有消息响应. 只有在弹出窗口结束后调用窗口才能继续. 在模态窗口"关闭"后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值. 非模态 ...
- 模态对话框的消息循环原理及分析笔记
简述: APP消息循环和模态对话框中局部消息循环的关系 根据上图可以看出,在APP的消息循环再派发ONOK消息后,调用ModalDlg的响应函数,pWnd->OnOk();在该消息中, 会 进入 ...
- 模态对话框和非模态对话框的消息循环分析
1.非模态对话框和父窗口共享当前线程的消息循环 2.模态对话框新建一个新的消息循环,并由当前消息循环派发消息,而父窗口.模态对话框屏蔽了用户对它父窗口的操作,但是不是在消息循环里面屏蔽,所以给父窗口发 ...
- MFC非模态对话框实例
[转载]MFC非模态对话框实例 2012-06-17 16:21:41| 分类: C++/MFC | 标签: |字号大中小 订阅 实例目的 在Windows环境中,对话框是一种常用的输入输出手段. ...
- 创建模态对话框和非模态对话框
MFC新手一枚,还是先从创建对话框开始吧. Windows有两种对话框,模态对话框(Modal Dialogue Box)和非模态对话框(Modeless). 模态对话框(Modal Dialogue ...
- java modal_Java 源码-模态对话框(Modal Dialog Box)的实现
所谓的模态对话框,即弹出后用户只能与对话框交互,而不能与背景页面交互的对话框. (modal specifies whether dialog blocks user input to other t ...
最新文章
- 如何精确测量一段代码的执行时间
- GDCM:读取gdcm::DataSetHelper的测试程序
- java:蓝桥杯,矩形面积交
- Hive体系结构(二)Hive的执行原理、与关系型数据库的比较
- 在Socket做服务器,在手机上用Http访问
- prometheus-net.DotNetRuntime 获取 CLR 指标原理解析
- HTML5新属性 Canves的整体学习
- 18.QThread线程创建
- 用C语言进行完数的判断(for循环和数组思想)
- html鼠标经过状态,30种炫酷html5鼠标滑过图片标题显示效果
- 尺子英语怎么读计算机英语怎么读,尺子的英文是什么用英语怎么说
- 解决Android studio启动模拟器一直Waiting for target device to come online的一种方式
- Linux cat命令学习
- 《走出自己的围城-2017年终总结》
- [vue3] 富文本
- vue3 reactive函数用法
- Android事件动机模式,2021最新Java大厂面试真题大全
- 2019最新泰牛PHP大牛班(基础+高级+实战+全套课件)
- 记录贴:RuntimeError: version_ <= kMaxSupportedFileFormatVersion INTERNAL ASSERT FAILED at /pytorch/caff
- php 汉王云名片_超级云名片,让你的客户不与你说“考虑一下”!