人气 241

[游戏程序] 关于鼠标右键弹不出问题的解决 [复制链接]

九艺网 2017-3-10 17:01:53

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在我正式开始写这个地图编辑器的时候,我并没有料到这个问题会困扰我长达一年之久,直到近日在网上某BBS中意外地发现了解决这个问题的方法,我已不只是为这个只需要一行代码即可解决的问题感慨了,我甚至感到了羞愧。正所谓“吃一堑长一智”,又有所谓“独乐乐不如众乐乐”,我便把这个困扰我的问题及它的解决方案写下来,与同我有一样问题的朋友们分享。
问题是这样的(这里直接拷贝了我在论坛上的提问):我的地图编辑器有个问题老是解决不了,就是右键菜单、对话框显示的问题。怎么说呢,当我有时(注意是有时,有时又可以)点击右键时,右键菜单显示不了,但我确定它确实弹出来了,因为那时画面就停住了,且我在右键菜单出现的大概位置点击后,能实现相应项的功能。也就是说,右键菜单弹出来了,但是显示不出来。对话框也有这个问题。
问题的解决从看到那篇《[转帖]在全屏(资源独占)游戏中弹出非模态对话框的》开始。原来,在全屏模式下,DirectDraw独占了显示,这导致通过GDI创建的对话框或其它窗口无法正常显示(In full-screen mode, DirectDraw has exclusive control over the display. As a result, dialog boxes and other windows created through GDI are not normally visible.)。当用MessageBox()、DialogBox()等弹出对话框或菜单时,这些对话框或菜单只能显示在隐藏的GDI表面上,而在被DirectDraw所控制的主表面上,它们是不会被显示出来的。所以,我们应该采用特殊技巧。这个技巧说来也非常简单,就是调用IDirectDraw7::FlipToGDISurface方法,将GDI表面设为主表面。这个方法在MessageBox()、DialogBox()等需要用到系统GDI的API前使用。之后问题解决。
回复

使用道具 举报

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

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-4-26 20:53 , Processed in 0.100858 second(s), 23 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.