0x7_對話方塊
對話方塊簡介
通過CreateWindow建立視窗,比較複雜。於是微軟提供了直接建立對話方塊的方式。
- 1、通過資源編輯器新增對話方塊資源,編輯ID
- 2、使用CreateDialog或DialogBox函式建立對話方塊
// 函式原型
HWND CreateDialog(
HINSTANCE hInstance, // handle to module
LPCTSTR lpTemplate, // dialog box template name
HWND hWndParent, // handle to owner window
DLGPROC lpDialogFunc // dialog box procedure
);
INT_PTR DialogBox(
HINSTANCE hInstance, // handle to module
LPCTSTR lpTemplate, // dialog box template
HWND hWndParent, // handle to owner window
DLGPROC lpDialogFunc // dialog box procedure
);
- 模態和非模態的區別
- 1、 CreateDialog建立的是非模態的對話方塊(不會阻塞父視窗)
- 2、 DialogBox建立的是模態對話方塊(會阻塞父視窗)
- 3、 非模態對話方塊需要直接編寫訊息迴圈,模態對話方塊自帶訊息迴圈
- 4、 退出訊息迴圈用EndDialog
對話方塊和視窗的區別
- | 視窗 | 對話方塊 |
---|---|---|
函式返回值 | 返回LRESULT | 返回BOOL |
訊息處理 | 不處理WM_INITDIALOG | 不處理WM_CREATE,WM_DESTORY,WM_PAINT |
不處理訊息的處理 | return DefWindowProc | return 0 |
對話方塊處理的主要訊息
WM_INITDIALOG | 初始化對話方塊 |
---|---|
WM_COMMAND | 響應對話方塊上常用控制元件的操作 |
WM_NOTIFY | 響應對話方塊複雜控制元件的操作 |
模態對話方塊的編寫
#include <windows.h>
#include <tchar.h>
#include "resource.h"
int WINAPI _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nShowCmd
)
{
g_hInstance = hInstance;
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
return 0;
}
INT_PTR CALLBACK DlgProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message)
{
case WM_CLOSE:
EndDialog(hWnd, 0);
//PostQuitMessage(EXIT_SUCCESS);
break;
default:
break;
}
return 0;
}
- 1、建立對話方塊資源
- 2、顯示呼叫DialogBox對話方塊
- 3、編寫對話方塊訊息處理函式
- 4、關閉對話方塊函式
資訊框
資訊框是模態對話方塊的一種特殊形式
函式原型:
int MessageBox(
HWND hWnd, // handle to owner window
LPCTSTR lpText, // text in message box
LPCTSTR lpCaption, // message box title
UINT uType // message box style
);
標識 | 描述 |
---|---|
MB_ABORTRETRYIGNORE | 訊息框包含三個按鈕:Abort、重試和忽略。 |
MB_ICONEXCLAMATION | 感嘆號點圖示出現在訊息框中。 |
MB_ICONQUESTION | 一個問號圖示出現在訊息框中。 |
MB_ICONSTOP | 一個停止標誌圖示出現在訊息框中 |
MB_OK | 訊息框包含一個按鈕:OK。這是預設值 |
MB_OKCANCEL | 訊息框包含兩個按鈕:OK和Cancel。 |
MB_RETRYCANCEL | 訊息框包含兩個按鈕:重試和取消。 |
MB_YESNO | YES NO |
MB_YESNOCANCEL | 訊息框包含三個按鈕:是、否和取消 |
返回值
返回值|使用者操作
IDABORT|按下 Abort
IDCANCEL|按下Cancel
IDIGNORE|按下Ignore
IDNO|按下NO
IDOK|按下OK
IDRETRY|按下Retry
IDYES|按下YES
非模態對話方塊
#include <windows.h>
#include <tchar.h>
#include "resource.h"
HINSTANCE g_hInstance = NULL;
int WINAPI _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nShowCmd)
{
g_hInstance = hInstance;
HWND hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
AnimateWindow(hWnd, 200, AW_CENTER);
ShowWindow(hWnd, SW_SHOW);
MSG msg;
while (GetMessage(&msg, 0, 0, 0))
{
DispatchMessage(&msg);
}
return 0;
}
INT_PTR CALLBACK DlgProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message)
{
case WM_CLOSE:
//EndDialog(hWnd, 0);
PostQuitMessage(EXIT_SUCCESS);
break;
default:
break;
}
return 0;
}
相關文章
- Dialog對話方塊
- 登入對話方塊
- 規定對話方塊
- DialogPane對話方塊佈局
- Flutter Widgets 對話方塊-DialogFlutter
- flutter demo (四):對話方塊Flutter
- java Swing詢問對話方塊Java
- 在 Flutter 使用 GetX 對話方塊Flutter
- Qt 對話方塊新增工具欄QT
- 訊息對話方塊 confirm() prompt()
- React中的模式對話方塊React模式
- VUE:點選開啟的對話方塊外面時,對話方塊總是被關閉Vue
- 如何自學qt(4)——對話方塊QT
- JavaFX 如何使用內建的對話方塊Java
- flutter佈局-7-About對話方塊Flutter
- w10系統對話方塊這麼變小_w10系統對話方塊如何縮小
- 建立互動式shell指令碼對話方塊指令碼
- Flutter 23: 圖解自定義 Dialog 對話方塊Flutter圖解
- 21.Quick QML-FileDialog、FolderDialog對話方塊UI
- [開發教程]第31講:Bootstrap對話方塊boot
- Electron 開啟儲存檔案對話方塊
- Element-Ui元件(三十八)Dialog 對話方塊UI元件
- C/C++ Qt Dialog 對話方塊元件應用C++QT元件
- c++開啟挑選圖片對話方塊C++
- 實現element-ui對話方塊可拖拽功能UI
- 模態對話方塊可能導致程式崩潰
- Win10系統怎麼禁用“刪除檔案”對話方塊_win10禁用“刪除檔案”對話方塊的方法Win10
- C++ Qt開發:標準Dialog對話方塊元件C++QT元件
- C++ Qt開發:自定義Dialog對話方塊元件C++QT元件
- 【C++】【MFC】模態和非模態對話方塊C++
- Tkinter (45) 彈出的對話方塊 Pup-up dialogs
- VC 對話方塊背景顏色、控制元件顏色控制元件
- JavaScript入門(4)確認(confirm訊息對話方塊)JavaScript
- pyqt-PyQt5開啟檔案對話方塊QFileDialogQT
- 模態和非模態對話方塊(簡單易懂!)
- 自定義一個簡單的載入對話方塊
- 如何在Response.Redirect前彈出alert對話方塊
- QT常用控制元件(一)——選單欄和對話方塊QT控制元件