使用对话框作为主窗口.未接收到WM_INITDIALOG消息

Using a dialog box as a main window. Not receiving WM_INITDIALOG messages

本文关键字:WM 消息 INITDIALOG 对话框 窗口      更新时间:2024-09-29

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

以下是我所做的。

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

我想不出其他重要的事情了。除了没有接收到WM_INITDIALOG消息之外,一切都很好。我这样做是为了让应用程序最小化到任务栏,如果需要的话,我可以有一个菜单。

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

其次,我是否应该期望使用此系统接收WM_INITDIALOG消息?如果没有,初始化的好方法是什么?比如说一个带字符串的组合框。(我看过WM_ACTIVATE、WM_ACTIWATEAPP等,但似乎没有什么合适的。并且组合框尚未在WM_CREATE中创建。(提前谢谢。

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

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