C++和Win32 WC_DIALOG关闭事件问题

C++ and Win32 WC_DIALOG close event problem

本文关键字:事件 问题 DIALOG Win32 WC C++      更新时间:2023-10-16
我的英语不好。抱歉
HWND DIALOG_0 = CreateWindowEx(0, WC_DIALOG, "Security Alert", DS_SETFONT | WS_OVERLAPPEDWINDOW | WS_VISIBLE, 600,300,300,200,Win.hwnd_0,NULL,NULL,NULL);
(WNDPROC)SetWindowLongPtr(DIALOG_0 , GWLP_WNDPROC, (INT_PTR)dede);
ShowWindow (DIALOG_0, SW_SHOW);
UpdateWindow(DIALOG_0);

如何进行关闭事件。如何使HWND点击事件

我用它,但它被锁住了。

(WNDPROC)SetWindowLongPtr(DIALOG_0 , GWLP_WNDPROC, (INT_PTR)dede);

WC_DIALOG创建dede函数

LONG_PTR __stdcall Win32::dede(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CTLCOLORDLG:
return (INT_PTR)GetStockObject(HOLLOW_BRUSH);
break;
default:
DefWindowProc(hDlg, message, wParam, lParam);
break;
}
return (INT_PTR)FALSE;
}

通常使用DialogBoxCreateDialog创建对话框,而不是使用CreateWindow。如果使用CreateWindow,则不能使用DS_样式。

GWLP_WNDPROC替换了原来的窗口过程,您通常应该调用CallWindowProc,而不是DefWindowProc。如果你不这样做,那么你就不会得到默认的IDCANCEL处理和对话框通常提供的所有其他东西。

捕获WM_CLOSEWM_COMMAND以处理关闭和单击事件。

MSDN在这里有一个对话框指南。