我不太明白这是如何运作的。所以我已经制作了对话框..或者盒子。我不知道如何让它们出现在我的代码中。现在我正试图让它们在我开始我的程序时正确弹出,这样我就可以基本了解它是如何工作的。
switch (message)
{
case WM_CREATE:
HINSTANCE hInstance = ((LPCREATESTRUCT) lParam)->hInstance;
CreateDialog(hInstance, "Whatever", hwnd, ABOUT_DIALOG);
这在CreateDialog中给出了一个错误,说int类型的参数与DLGPROC不兼容。我假设我需要在某个地方声明我的对话框?
如果我的第一个启动窗口上有一个按钮,我怎么知道用户按下了按钮?我将再次假设并说我需要在WM_COMMAND命令中的某处捕获它?
答案 0 :(得分:3)
最后一个参数,即你传递给ABOUT_DIALOG
的东西,需要是DLGPROC
。这是这种形式的一个功能:
INT_PTR CALLBACK DialogProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
编译器告诉您ABOUT_DIALOG
不是该表单的函数。事实上,编译器告诉你ABOUT_DIALOG
是int
,这绝对不是正确的事情!
要使用默认的无操作对话框程序启动并运行它,请执行以下操作:
INT_PTR CALLBACK DialogProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
return FALSE;
}
通常,对话框过程在处理消息时应返回TRUE,如果不处理则返回FALSE。如果对话框过程返回FALSE,则对话框管理器将执行默认对话框操作以响应消息。
因此,通过返回FALSE
,我们要求进行默认处理。
启动并运行对话框后,您可以使用所需的任何功能填写对话框程序。