游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1055|回复: 0

再发一帖,大侠们指点指点:关于自定义的模态对话框的

[复制链接]

2

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2006-4-12 11:47:00 | 显示全部楼层 |阅读模式
平常我们玩的很多游戏在窗口模式下弹出的类似windows的MessageBox的提示框,这个咚咚具体是怎么实现的?
反正我觉得肯定不是用DialogBox实现的,因为DialogBox要把父窗口Disable掉,而游戏中的MsgBox都是子窗口,出现MsgBox时父窗口仍然有效并可以接受诸如 WM_CLOSE 等消息。

我自己做了一个试验,是这样实现的:
1. 用RegisterClass注册一个窗口类
2. 用CreateWindow创建一个子窗口
3. 在子窗口的WM_PAINT消息里贴图,实现自定义的图形窗口
4. 进入无限循环并用 PeekMessage 检测消息,如果检测到键盘和鼠标消息就将其重定向到子窗口上,其他消息则用 DispatchMessage 转发到其相应位置,收到自定义响应消息(比如叫WM_MY_RESPONSE)时退出循环。
5. 通过自定义的响应消息(WM_MY_RESPONSE)的wParam和 lParam来进行相应操作
6. 用DestroyWindow销毁子窗口
7. 用UnRegisterClass卸载子窗口类

但是我觉得这样做的缺点就是每次都要 注册/卸载 窗口类,而且窗口上的所有控件都是在程序中创建的,控件比较多的情况下就很复杂,要是能像DialogBox那样使用预先定义的窗口模版,而且只使用windows的"#32770"对话框类就好了,不知道该怎么实现,有经验的大侠们是怎么处理这个问题的呢?

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 04:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表