diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/MessageBoxTimeout.cpp b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/MessageBoxTimeout.cpp new file mode 100644 index 0000000..c4d1a47 --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/MessageBoxTimeout.cpp @@ -0,0 +1,28 @@ +#include "pch.h" +#include "MessageBoxTimeout.h" + +int MessageBoxTimeoutA(IN HWND hWnd, IN LPCSTR lpText, IN LPCSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds) +{ + MSGBOXAAPI func_MessageBoxTimeoutA = nullptr; + HMODULE hUser32 = GetModuleHandle(L"user32.dll"); + if (!hUser32) + return -1; + func_MessageBoxTimeoutA = (MSGBOXAAPI)GetProcAddress(hUser32, "MessageBoxTimeoutA"); + if (func_MessageBoxTimeoutA) + return func_MessageBoxTimeoutA(hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds); + else + return -2; +} + +int MessageBoxTimeoutW(IN HWND hWnd, IN LPCWSTR lpText, IN LPCWSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds) +{ + MSGBOXWAPI func_MessageBoxTimeoutW = nullptr; + HMODULE hUser32 = GetModuleHandle(L"user32.dll"); + if (!hUser32) + return -1; + func_MessageBoxTimeoutW = (MSGBOXWAPI)GetProcAddress(hUser32, "MessageBoxTimeoutW"); + if (func_MessageBoxTimeoutW) + return func_MessageBoxTimeoutW(hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds); + else + return -2; +} diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/MessageBoxTimeout.h b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/MessageBoxTimeout.h new file mode 100644 index 0000000..1af0da4 --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/MessageBoxTimeout.h @@ -0,0 +1,19 @@ +#pragma once +#include + +//函数指针定义 +typedef int(__stdcall* MSGBOXAAPI)(IN HWND hWnd, IN LPCSTR lpText, IN LPCSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds); +typedef int(__stdcall* MSGBOXWAPI)(IN HWND hWnd, IN LPCWSTR lpText, IN LPCWSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds); + + +//ANSI版本函数 +int MessageBoxTimeoutA(IN HWND hWnd, IN LPCSTR lpText, IN LPCSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds); +//Unicode版本函数 +int MessageBoxTimeoutW(IN HWND hWnd, IN LPCWSTR lpText, IN LPCWSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds); + +//Windows针对不同版本的函数进行的宏定义判断 +#ifdef _UNICODE +#define MessageBoxTimeout MessageBoxTimeoutW +#else +#define MessageBoxTimeout MessageBoxTimeoutA +#endif \ No newline at end of file diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV03MessageBoxTimeout.aps b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV03MessageBoxTimeout.aps new file mode 100644 index 0000000..96a00f7 Binary files /dev/null and b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV03MessageBoxTimeout.aps differ diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV03MessageBoxTimeout.rc b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV03MessageBoxTimeout.rc new file mode 100644 index 0000000..b52fddb Binary files /dev/null and b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV03MessageBoxTimeout.rc differ diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.cpp b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.cpp new file mode 100644 index 0000000..3d6dc35 --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.cpp @@ -0,0 +1,107 @@ +锘 +// NTV_03_MessageBoxTimeout.cpp: 瀹氫箟搴旂敤绋嬪簭鐨勭被琛屼负銆 +// + +#include "pch.h" +#include "framework.h" +#include "NTV_03_MessageBoxTimeout.h" +#include "NTV_03_MessageBoxTimeoutDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CNTV03MessageBoxTimeoutApp + +BEGIN_MESSAGE_MAP(CNTV03MessageBoxTimeoutApp, CWinApp) + ON_COMMAND(ID_HELP, &CWinApp::OnHelp) +END_MESSAGE_MAP() + + +// CNTV03MessageBoxTimeoutApp 鏋勯 + +CNTV03MessageBoxTimeoutApp::CNTV03MessageBoxTimeoutApp() +{ + // 鏀寔閲嶆柊鍚姩绠$悊鍣 + m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; + + // TODO: 鍦ㄦ澶勬坊鍔犳瀯閫犱唬鐮侊紝 + // 灏嗘墍鏈夐噸瑕佺殑鍒濆鍖栨斁缃湪 InitInstance 涓 +} + + +// 鍞竴鐨 CNTV03MessageBoxTimeoutApp 瀵硅薄 + +CNTV03MessageBoxTimeoutApp theApp; + + +// CNTV03MessageBoxTimeoutApp 鍒濆鍖 + +BOOL CNTV03MessageBoxTimeoutApp::InitInstance() +{ + // 濡傛灉涓涓繍琛屽湪 Windows XP 涓婄殑搴旂敤绋嬪簭娓呭崟鎸囧畾瑕 + // 浣跨敤 ComCtl32.dll 鐗堟湰 6 鎴栨洿楂樼増鏈潵鍚敤鍙鍖栨柟寮忥紝 + //鍒欓渶瑕 InitCommonControlsEx()銆 鍚﹀垯锛屽皢鏃犳硶鍒涘缓绐楀彛銆 + INITCOMMONCONTROLSEX InitCtrls; + InitCtrls.dwSize = sizeof(InitCtrls); + // 灏嗗畠璁剧疆涓哄寘鎷墍鏈夎鍦ㄥ簲鐢ㄧ▼搴忎腑浣跨敤鐨 + // 鍏叡鎺т欢绫汇 + InitCtrls.dwICC = ICC_WIN95_CLASSES; + InitCommonControlsEx(&InitCtrls); + + CWinApp::InitInstance(); + + + AfxEnableControlContainer(); + + // 鍒涘缓 shell 绠$悊鍣紝浠ラ槻瀵硅瘽妗嗗寘鍚 + // 浠讳綍 shell 鏍戣鍥炬帶浠舵垨 shell 鍒楄〃瑙嗗浘鎺т欢銆 + CShellManager *pShellManager = new CShellManager; + + // 婵娲烩淲indows Native鈥濊瑙夌鐞嗗櫒锛屼互渚垮湪 MFC 鎺т欢涓惎鐢ㄤ富棰 + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); + + // 鏍囧噯鍒濆鍖 + // 濡傛灉鏈娇鐢ㄨ繖浜涘姛鑳藉苟甯屾湜鍑忓皬 + // 鏈缁堝彲鎵ц鏂囦欢鐨勫ぇ灏忥紝鍒欏簲绉婚櫎涓嬪垪 + // 涓嶉渶瑕佺殑鐗瑰畾鍒濆鍖栦緥绋 + // 鏇存敼鐢ㄤ簬瀛樺偍璁剧疆鐨勬敞鍐岃〃椤 + // TODO: 搴旈傚綋淇敼璇ュ瓧绗︿覆锛 + // 渚嬪淇敼涓哄叕鍙告垨缁勭粐鍚 + SetRegistryKey(_T("搴旂敤绋嬪簭鍚戝鐢熸垚鐨勬湰鍦板簲鐢ㄧ▼搴")); + + CNTV03MessageBoxTimeoutDlg dlg; + m_pMainWnd = &dlg; + INT_PTR nResponse = dlg.DoModal(); + if (nResponse == IDOK) + { + // TODO: 鍦ㄦ鏀剧疆澶勭悊浣曟椂鐢 + // 鈥滅‘瀹氣濇潵鍏抽棴瀵硅瘽妗嗙殑浠g爜 + } + else if (nResponse == IDCANCEL) + { + // TODO: 鍦ㄦ鏀剧疆澶勭悊浣曟椂鐢 + // 鈥滃彇娑堚濇潵鍏抽棴瀵硅瘽妗嗙殑浠g爜 + } + else if (nResponse == -1) + { + TRACE(traceAppMsg, 0, "璀﹀憡: 瀵硅瘽妗嗗垱寤哄け璐ワ紝搴旂敤绋嬪簭灏嗘剰澶栫粓姝€俓n"); + TRACE(traceAppMsg, 0, "璀﹀憡: 濡傛灉鎮ㄥ湪瀵硅瘽妗嗕笂浣跨敤 MFC 鎺т欢锛屽垯鏃犳硶 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS銆俓n"); + } + + // 鍒犻櫎涓婇潰鍒涘缓鐨 shell 绠$悊鍣ㄣ + if (pShellManager != nullptr) + { + delete pShellManager; + } + +#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS) + ControlBarCleanUp(); +#endif + + // 鐢变簬瀵硅瘽妗嗗凡鍏抽棴锛屾墍浠ュ皢杩斿洖 FALSE 浠ヤ究閫鍑哄簲鐢ㄧ▼搴忥紝 + // 鑰屼笉鏄惎鍔ㄥ簲鐢ㄧ▼搴忕殑娑堟伅娉点 + return FALSE; +} + diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.h b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.h new file mode 100644 index 0000000..8ca6626 --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.h @@ -0,0 +1,32 @@ +锘 +// NTV_03_MessageBoxTimeout.h: PROJECT_NAME 搴旂敤绋嬪簭鐨勪富澶存枃浠 +// + +#pragma once + +#ifndef __AFXWIN_H__ + #error "鍦ㄥ寘鍚鏂囦欢涔嬪墠鍖呭惈 'pch.h' 浠ョ敓鎴 PCH" +#endif + +#include "resource.h" // 涓荤鍙 + + +// CNTV03MessageBoxTimeoutApp: +// 鏈夊叧姝ょ被鐨勫疄鐜帮紝璇峰弬闃 NTV_03_MessageBoxTimeout.cpp +// + +class CNTV03MessageBoxTimeoutApp : public CWinApp +{ +public: + CNTV03MessageBoxTimeoutApp(); + +// 閲嶅啓 +public: + virtual BOOL InitInstance(); + +// 瀹炵幇 + + DECLARE_MESSAGE_MAP() +}; + +extern CNTV03MessageBoxTimeoutApp theApp; diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.vcxproj b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.vcxproj new file mode 100644 index 0000000..b56e73b --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.vcxproj @@ -0,0 +1,217 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + {F6094314-5D4D-41B8-A33D-987A7D92CB4C} + MFCProj + NTV03MessageBoxTimeout + 10.0 + + + + Application + true + v143 + Unicode + Dynamic + + + Application + false + v143 + true + Unicode + Dynamic + + + Application + true + v143 + Unicode + Dynamic + + + Application + false + v143 + true + Unicode + Dynamic + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + true + _WINDOWS;_DEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + true + WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + true + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + true + true + true + _WINDOWS;NDEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.vcxproj.filters b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.vcxproj.filters new file mode 100644 index 0000000..885ef43 --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.vcxproj.filters @@ -0,0 +1,69 @@ +锘 + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + + + 璧勬簮鏂囦欢 + + + + + 璧勬簮鏂囦欢 + + + + + 璧勬簮鏂囦欢 + + + \ No newline at end of file diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.vcxproj.user b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.vcxproj.user new file mode 100644 index 0000000..3c14e35 --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout.vcxproj.user @@ -0,0 +1,6 @@ +锘 + + + NTV03MessageBoxTimeout.rc + + \ No newline at end of file diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeoutDlg.cpp b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeoutDlg.cpp new file mode 100644 index 0000000..ff39435 --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeoutDlg.cpp @@ -0,0 +1,299 @@ +锘 +// NTV_03_MessageBoxTimeoutDlg.cpp: 瀹炵幇鏂囦欢 +// + +#include "pch.h" +#include "framework.h" +#include "NTV_03_MessageBoxTimeout.h" +#include "NTV_03_MessageBoxTimeoutDlg.h" +#include "afxdialogex.h" +#include "MessageBoxTimeout.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +#define GetControl(Class,ID) ((Class*)(GetDlgItem(ID))) + +// 鐢ㄤ簬搴旂敤绋嬪簭鈥滃叧浜庘濊彍鍗曢」鐨 CAboutDlg 瀵硅瘽妗 + +class CAboutDlg : public CDialogEx +{ +public: + CAboutDlg(); + +// 瀵硅瘽妗嗘暟鎹 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_ABOUTBOX }; +#endif + + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 鏀寔 + +// 瀹炵幇 +protected: + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) +{ +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) +END_MESSAGE_MAP() + + +// CNTV03MessageBoxTimeoutDlg 瀵硅瘽妗 + + + +CNTV03MessageBoxTimeoutDlg::CNTV03MessageBoxTimeoutDlg(CWnd* pParent /*=nullptr*/) + : CDialogEx(IDD_NTV_03_MESSAGEBOXTIMEOUT_DIALOG, pParent) +{ + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); +} + +void CNTV03MessageBoxTimeoutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + +BEGIN_MESSAGE_MAP(CNTV03MessageBoxTimeoutDlg, CDialogEx) + ON_WM_SYSCOMMAND() + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDOK, &CNTV03MessageBoxTimeoutDlg::OnBnClickedOk) + ON_BN_CLICKED(IDCANCEL, &CNTV03MessageBoxTimeoutDlg::OnBnClickedCancel) + ON_WM_CLOSE() + ON_BN_CLICKED(IDB_CREATE, &CNTV03MessageBoxTimeoutDlg::OnBnClickedCreate) + ON_BN_CLICKED(IDB_EXIT, &CNTV03MessageBoxTimeoutDlg::OnBnClickedExit) +END_MESSAGE_MAP() + + +void CNTV03MessageBoxTimeoutDlg::InitGUI() +{ + GetControl(CComboBox, IDC_ICON_STYLE)->AddString(L"<鏃>"); + GetControl(CComboBox, IDC_ICON_STYLE)->AddString(L"绾㈣壊閿欏彿(MB_ICONHAND/MB_ICONERROR/MB_ICONSTOP)"); + GetControl(CComboBox, IDC_ICON_STYLE)->AddString(L"榛勮壊涓夎璀﹀憡(MB_ICONEXCLAMATION/MB_ICONWARNING)"); + GetControl(CComboBox, IDC_ICON_STYLE)->AddString(L"钃濊壊鍦嗗徆鍙(MB_ICONASTERISK/MB_ICONINFORMATION)"); + GetControl(CComboBox, IDC_ICON_STYLE)->AddString(L"钃濊壊鍦嗛棶鍙(MB_ICONQUESTION)"); + GetControl(CComboBox, IDC_ICON_STYLE)->SetCurSel(0); + GetControl(CComboBox, IDC_BUTTON_STYLE)->AddString(L"銆愮‘瀹氥(MB_OK)"); + GetControl(CComboBox, IDC_BUTTON_STYLE)->AddString(L"銆愮‘瀹氥戙愬彇娑堛(MB_OKCANCEL)"); + GetControl(CComboBox, IDC_BUTTON_STYLE)->AddString(L"銆愭槸銆戙愬惁銆(MB_YESNO)"); + GetControl(CComboBox, IDC_BUTTON_STYLE)->AddString(L"銆愭槸銆戙愬惁銆戙愬彇娑堛(MB_YESNOCANCEL)"); + GetControl(CComboBox, IDC_BUTTON_STYLE)->AddString(L"銆愪腑姝€戙愰噸璇曘戙愬拷鐣ャ(MB_ABORTRETRYIGNORE)"); + GetControl(CComboBox, IDC_BUTTON_STYLE)->AddString(L"銆愰噸璇曘戙愬彇娑堛(MB_RETRYCANCEL)"); + GetControl(CComboBox, IDC_BUTTON_STYLE)->SetCurSel(0); + SetDlgItemText(IDE_LAST_STATUS, L"<鏃犳暟鎹>"); +} + +int CNTV03MessageBoxTimeoutDlg::CreateMessageBox() +{ + CString caption, text; + DWORD messagebox_flag = 0; + int timeout_value, icon_style, button_style; + GetDlgItemText(IDE_CAPTION, caption); + GetDlgItemText(IDE_TEXT, text); + timeout_value = GetDlgItemInt(IDE_TIMEOUT_VALUE); + icon_style = GetControl(CComboBox, IDC_ICON_STYLE)->GetCurSel(); + button_style = GetControl(CComboBox, IDC_BUTTON_STYLE)->GetCurSel(); + switch (button_style) + { + case 0: + messagebox_flag = MB_OK; + break; + case 1: + messagebox_flag = MB_OKCANCEL; + break; + case 2: + messagebox_flag = MB_YESNO; + break; + case 3: + messagebox_flag = MB_YESNOCANCEL; + break; + case 4: + messagebox_flag = MB_ABORTRETRYIGNORE; + break; + case 5: + messagebox_flag = MB_RETRYCANCEL; + break; + default: + messagebox_flag = MB_OK; + break; + } + switch (icon_style) + { + case 1: + messagebox_flag |= MB_ICONERROR; + break; + case 2: + messagebox_flag |= MB_ICONWARNING; + break; + case 3: + messagebox_flag |= MB_ICONINFORMATION; + break; + case 4: + messagebox_flag |= MB_ICONQUESTION; + break; + } + //姝ゅ搴旇繑鍥濵essageBoxTimeout鐨勮繑鍥炲 + return MessageBoxTimeout(NULL, text.GetString(), caption.GetString(), messagebox_flag, 0, timeout_value); +} + +// CNTV03MessageBoxTimeoutDlg 娑堟伅澶勭悊绋嬪簭 + +BOOL CNTV03MessageBoxTimeoutDlg::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // 灏嗏滃叧浜...鈥濊彍鍗曢」娣诲姞鍒扮郴缁熻彍鍗曚腑銆 + + // IDM_ABOUTBOX 蹇呴』鍦ㄧ郴缁熷懡浠よ寖鍥村唴銆 + ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); + ASSERT(IDM_ABOUTBOX < 0xF000); + + CMenu* pSysMenu = GetSystemMenu(FALSE); + if (pSysMenu != nullptr) + { + BOOL bNameValid; + CString strAboutMenu; + bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); + ASSERT(bNameValid); + if (!strAboutMenu.IsEmpty()) + { + pSysMenu->AppendMenu(MF_SEPARATOR); + pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); + } + } + + // 璁剧疆姝ゅ璇濇鐨勫浘鏍囥 褰撳簲鐢ㄧ▼搴忎富绐楀彛涓嶆槸瀵硅瘽妗嗘椂锛屾鏋跺皢鑷姩 + // 鎵ц姝ゆ搷浣 + SetIcon(m_hIcon, TRUE); // 璁剧疆澶у浘鏍 + SetIcon(m_hIcon, FALSE); // 璁剧疆灏忓浘鏍 + + // TODO: 鍦ㄦ娣诲姞棰濆鐨勫垵濮嬪寲浠g爜 + + InitGUI(); + + return TRUE; // 闄ら潪灏嗙劍鐐硅缃埌鎺т欢锛屽惁鍒欒繑鍥 TRUE +} + +void CNTV03MessageBoxTimeoutDlg::OnSysCommand(UINT nID, LPARAM lParam) +{ + if ((nID & 0xFFF0) == IDM_ABOUTBOX) + { + CAboutDlg dlgAbout; + dlgAbout.DoModal(); + } + else + { + CDialogEx::OnSysCommand(nID, lParam); + } +} + +// 濡傛灉鍚戝璇濇娣诲姞鏈灏忓寲鎸夐挳锛屽垯闇瑕佷笅闈㈢殑浠g爜 +// 鏉ョ粯鍒惰鍥炬爣銆 瀵逛簬浣跨敤鏂囨。/瑙嗗浘妯″瀷鐨 MFC 搴旂敤绋嬪簭锛 +// 杩欏皢鐢辨鏋惰嚜鍔ㄥ畬鎴愩 + +void CNTV03MessageBoxTimeoutDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // 鐢ㄤ簬缁樺埗鐨勮澶囦笂涓嬫枃 + + SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); + + // 浣垮浘鏍囧湪宸ヤ綔鍖虹煩褰腑灞呬腑 + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // 缁樺埗鍥炬爣 + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialogEx::OnPaint(); + } +} + +//褰撶敤鎴锋嫋鍔ㄦ渶灏忓寲绐楀彛鏃剁郴缁熻皟鐢ㄦ鍑芥暟鍙栧緱鍏夋爣 +//鏄剧ず銆 +HCURSOR CNTV03MessageBoxTimeoutDlg::OnQueryDragIcon() +{ + return static_cast(m_hIcon); +} + + +void CNTV03MessageBoxTimeoutDlg::OnClose() +{ + // TODO: 鍦ㄦ娣诲姞娑堟伅澶勭悊绋嬪簭浠g爜鍜/鎴栬皟鐢ㄩ粯璁ゅ + exit(0); + CDialogEx::OnClose(); +} + + +void CNTV03MessageBoxTimeoutDlg::OnBnClickedOk() +{ + // TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜 + //CDialogEx::OnOK(); +} + + +void CNTV03MessageBoxTimeoutDlg::OnBnClickedCancel() +{ + // TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜 + //CDialogEx::OnCancel(); +} + + +void CNTV03MessageBoxTimeoutDlg::OnBnClickedCreate() +{ + // TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜 + int result = CreateMessageBox(); + CString status_str = L"<鏃犳暟鎹>"; + switch (result) + { + case IDOK: + status_str = L"鎸変笅浜嗐愮‘瀹氥戞寜閽 (IDOK)"; + break; + case IDCANCEL: + status_str = L"鎸変笅浜嗐愬彇娑堛戞寜閽 (IDCANCEL)"; + break; + case IDABORT: + status_str = L"鎸変笅浜嗐愪腑姝€戞寜閽 (IDABORT)"; + break; + case IDRETRY: + status_str = L"鎸変笅浜嗐愰噸璇曘戞寜閽 (IDRETRY)"; + break; + case IDIGNORE: + status_str = L"鎸変笅浜嗐愬拷鐣ャ戞寜閽 (IDIGNORE)"; + break; + case IDYES: + status_str = L"鎸変笅浜嗐愭槸銆戞寜閽 (IDYES)"; + break; + case IDNO: + status_str = L"鎸変笅浜嗐愬惁銆戞寜閽 (IDNO)"; + break; + case IDTIMEOUT: + status_str = L"瀵硅瘽妗嗚秴鏃堕鍑 (IDTIMEOUT)"; + break; + } + SetDlgItemText(IDE_LAST_STATUS, status_str); +} + + +void CNTV03MessageBoxTimeoutDlg::OnBnClickedExit() +{ + // TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜 + exit(0); +} diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeoutDlg.h b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeoutDlg.h new file mode 100644 index 0000000..71c262f --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeoutDlg.h @@ -0,0 +1,44 @@ +锘 +// NTV_03_MessageBoxTimeoutDlg.h: 澶存枃浠 +// + +#pragma once + + +// CNTV03MessageBoxTimeoutDlg 瀵硅瘽妗 +class CNTV03MessageBoxTimeoutDlg : public CDialogEx +{ +// 鏋勯 +public: + CNTV03MessageBoxTimeoutDlg(CWnd* pParent = nullptr); // 鏍囧噯鏋勯犲嚱鏁 + +// 瀵硅瘽妗嗘暟鎹 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_NTV_03_MESSAGEBOXTIMEOUT_DIALOG }; +#endif + + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 鏀寔 + + +// 瀹炵幇 +protected: + HICON m_hIcon; + + void InitGUI(); + + int CreateMessageBox(); + + // 鐢熸垚鐨勬秷鎭槧灏勫嚱鏁 + virtual BOOL OnInitDialog(); + afx_msg void OnSysCommand(UINT nID, LPARAM lParam); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedOk(); + afx_msg void OnBnClickedCancel(); + afx_msg void OnClose(); + afx_msg void OnBnClickedCreate(); + afx_msg void OnBnClickedExit(); +}; diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/framework.h b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/framework.h new file mode 100644 index 0000000..fac8b6c --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/framework.h @@ -0,0 +1,49 @@ +锘#pragma once + +#ifndef VC_EXTRALEAN +#define VC_EXTRALEAN // 浠 Windows 澶翠腑鎺掗櫎鏋佸皯浣跨敤鐨勮祫鏂 +#endif + +#include "targetver.h" + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 鏌愪簺 CString 鏋勯犲嚱鏁板皢鏄樉寮忕殑 + +// 鍏抽棴 MFC 鐨勪竴浜涘父瑙佷笖缁忓父鍙斁蹇冨拷鐣ョ殑闅愯棌璀﹀憡娑堟伅 +#define _AFX_ALL_WARNINGS + +#include // MFC 鏍稿績缁勪欢鍜屾爣鍑嗙粍浠 +#include // MFC 鎵╁睍 + + +#include // MFC 鑷姩鍖栫被 + + + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC 瀵 Internet Explorer 4 鍏叡鎺т欢鐨勬敮鎸 +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC 瀵 Windows 鍏叡鎺т欢鐨勬敮鎸 +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include // MFC 鏀寔鍔熻兘鍖哄拰鎺у埗鏉 + + + + + + + + + +#ifdef _UNICODE +#if defined _M_IX86 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") +#elif defined _M_X64 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") +#else +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") +#endif +#endif + + diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/pch.cpp b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/pch.cpp new file mode 100644 index 0000000..db1a479 --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/pch.cpp @@ -0,0 +1,5 @@ +锘// pch.cpp: 涓庨缂栬瘧鏍囧ご瀵瑰簲鐨勬簮鏂囦欢 + +#include "pch.h" + +// 褰撲娇鐢ㄩ缂栬瘧鐨勫ご鏃讹紝闇瑕佷娇鐢ㄦ婧愭枃浠讹紝缂栬瘧鎵嶈兘鎴愬姛銆 diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/pch.h b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/pch.h new file mode 100644 index 0000000..aa4549e --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/pch.h @@ -0,0 +1,13 @@ +锘// pch.h: 杩欐槸棰勭紪璇戞爣澶存枃浠躲 +// 涓嬫柟鍒楀嚭鐨勬枃浠朵粎缂栬瘧涓娆★紝鎻愰珮浜嗗皢鏉ョ敓鎴愮殑鐢熸垚鎬ц兘銆 +// 杩欒繕灏嗗奖鍝 IntelliSense 鎬ц兘锛屽寘鎷唬鐮佸畬鎴愬拰璁稿浠g爜娴忚鍔熻兘銆 +// 浣嗘槸锛屽鏋滄澶勫垪鍑虹殑鏂囦欢涓殑浠讳綍涓涓湪鐢熸垚涔嬮棿鏈夋洿鏂帮紝瀹冧滑鍏ㄩ儴閮藉皢琚噸鏂扮紪璇戙 +// 璇峰嬁鍦ㄦ澶勬坊鍔犺棰戠箒鏇存柊鐨勬枃浠讹紝杩欏皢浣垮緱鎬ц兘浼樺娍鏃犳晥銆 + +#ifndef PCH_H +#define PCH_H + +// 娣诲姞瑕佸湪姝ゅ棰勭紪璇戠殑鏍囧ご +#include "framework.h" + +#endif //PCH_H diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/res/NTV03MessageBoxTimeout.rc2 b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/res/NTV03MessageBoxTimeout.rc2 new file mode 100644 index 0000000..c6604a8 Binary files /dev/null and b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/res/NTV03MessageBoxTimeout.rc2 differ diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/res/NTV_03_MessageBoxTimeout.ico b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/res/NTV_03_MessageBoxTimeout.ico new file mode 100644 index 0000000..d56fbcd Binary files /dev/null and b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/res/NTV_03_MessageBoxTimeout.ico differ diff --git a/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/resource.h b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/resource.h new file mode 100644 index 0000000..2a59857 --- /dev/null +++ b/NTV_03_MessageBoxTimeout/NTV_03_MessageBoxTimeout/resource.h @@ -0,0 +1,28 @@ +锘//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ 鐢熸垚鐨勫寘鍚枃浠躲 +// 渚 NTV03MessageBoxTimeout.rc 浣跨敤 +// +#define IDM_ABOUTBOX 0x0010 +#define IDD_ABOUTBOX 100 +#define IDS_ABOUTBOX 101 +#define IDD_NTV_03_MESSAGEBOXTIMEOUT_DIALOG 102 +#define IDR_MAINFRAME 128 +#define IDE_CAPTION 1000 +#define IDE_TEXT 1001 +#define IDC_ICON_STYLE 1002 +#define IDE_TIMEOUT_VALUE 1003 +#define IDC_BUTTON_STYLE 1004 +#define IDB_CREATE 1005 +#define IDB_EXIT 1006 +#define IDE_LAST_STATUS 1007 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 130 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1008 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif