打开一个对话框

时间:2013-04-24 20:34:39

标签: c++ winapi dialog

我不太明白这是如何运作的。所以我已经制作了对话框..或者盒子。我不知道如何让它们出现在我的代码中。现在我正试图让它们在我开始我的程序时正确弹出,这样我就可以基本了解它是如何工作的。

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

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

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

1 个答案:

答案 0 :(得分:3)

最后一个参数,即你传递给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;
}

documentation说:

  

通常,对话框过程在处理消息时应返回TRUE,如果不处理则返回FALSE。如果对话框过程返回FALSE,则对话框管理器将执行默认对话框操作以响应消息。

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

启动并运行对话框后,您可以使用所需的任何功能填写对话框程序。