0

我创建了一个无模式对话框作为主窗口,但没有向窗口过程发送 WM_INITDIALOG 消息。

这就是我所做的。

  1. 使用 Visual Studio 的资源编辑器创建了一个对话框模板,并将其类名设置为自定义类。
  2. 使用 WNDCLASSEX 注册类,窗口程序,以及一些图标和画笔等。
  3. 使用 CreateDialog(),最后两个参数设置为 NULL,(父窗口和窗口过程)。
  4. 使用 IsDialogMessage()、TranslateMessage() 和 DispatchMessage() 创建了消息循环;
  5. 如果未处理任何消息,则默认在窗口过程中返回 DefDlgProc()。

我想不出还有什么重要的事情。除了没有收到 WM_INITDIALOG 消息外,一切正常。我已经这样做了,所以应用程序最小化到任务栏,如果需要我可以有一个菜单。

所以我的第一个问题是,我做了什么蠢事吗?

其次,我应该期望使用这个系统接收 WM_INITDIALOG 消息吗?如果没有,什么是初始化带有字符串的组合框的好方法。(我已经查看了 WM_ACTIVATE、WM_ACTIVATEAPP 等内容,但似乎没有什么合适的。并且组合框尚未在 WM_CREATE 创建。)提前致谢。

4

1 回答 1

0

我在发布后不久就意识到了答案。正如上面评论中提到的,它是一个窗口过程,而不是一个对话框过程,所以我不应该尝试在过程中初始化子窗口。

所以我在创建对话框之后和消息循环之前在过程之外初始化了它们。所有对话框功能都按预期工作,但它是一个主窗口,可以有一个菜单并最小化到任务栏。

于 2021-05-18T11:22:36.240 回答