打开对话框

Opening a dialog box

本文关键字:打开对话框      更新时间:2023-10-16

我不太明白这是怎么回事。我让对话框。或盒子。我不知道如何让它们出现在我的代码中。现在我正试着让它们在我启动程序时弹出,这样我就可以对它的工作原理有一个基本的了解。

 switch (message)
 {
 case WM_CREATE:
     HINSTANCE hInstance = ((LPCREATESTRUCT) lParam)->hInstance;
     CreateDialog(hInstance, "Whatever", hwnd, ABOUT_DIALOG);

这在CreateDialog中给了我一个错误,说int类型的参数与DLGPROC不兼容。我假设我需要在某处声明我的对话框?

如果我在我的第一个启动窗口上有一个按钮,我怎么知道用户按下了这个按钮?我将再次假设并说我需要在WM_COMMAND命令的某个地方捕获它?

最后一个参数,您传递给ABOUT_DIALOG的东西,需要是DLGPROC。这个函数的形式是:

INT_PTR CALLBACK DialogProc(
  HWND hwndDlg,
  UINT uMsg,
  WPARAM wParam,
  LPARAM lParam
);

编译器告诉你ABOUT_DIALOG不是那种形式的函数。事实上,编译器告诉您ABOUT_DIALOGint,这绝对不是正确的事情!

要让它启动并运行一个默认的不做任何事情的对话框过程,实现如下:

INT_PTR CALLBACK DialogProc(
  HWND hwndDlg,
  UINT uMsg,
  WPARAM wParam,
  LPARAM lParam
)
{
    return FALSE;
}

文档是这样说的:

通常,如果对话框过程处理了消息,则应该返回TRUE,如果没有,则返回FALSE。如果对话框过程返回FALSE,对话管理器将执行默认的对话操作来响应该消息。

因此,通过返回FALSE,我们要求默认处理。

一旦对话框启动并运行,您就可以用您需要的任何功能填充对话框过程。