如何在DIRECTX全屏模式下正常显示输入法??

DarkPrince 2001-03-08 09:07:00
在DDRAW全屏独占模式下,系统输入法不能正常显示,输入法框会随着屏幕的刷新而闪动,我很着急,不知道怎样解决这个问题,请高手给予帮助,无限感谢。

希望同大家探讨vc技术问题

DarkPrince@263.net
...全文
518 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
monkey79 2001-04-03
  • 打赏
  • 举报
回复
有谁是搞平面设计的,可以与你交流交流吗?
monkey5258@china.com
招RD和QA 2001-03-26
  • 打赏
  • 举报
回复
DirectX SDK 有一个例子FSwindow专门讲全屏模式下的对话框,仔细研究去吧。
chenlee 2001-03-26
  • 打赏
  • 举报
回复
一切都不用你操心,给主表面挂接Clipper后,DirectDraw就会
自动对主窗口进行剪裁。

用下面的代码就可以为主表面挂接上Clipper:

void AddClipperToSurface(
LPDIRECTDRAW7 lpDD, // DirectDraw
LPDIRECTDRAWSURFACE7 lpDDSMain, // 主表面指针
HWND hMainWnd) // 主窗口句柄
{
// 首先创建一个Clipper:
LPDIRECTDRAWCLIPPER clipper;
lpDD->CreateClipper(0, &clipper, 0);

// 将clipper与主窗口进行关联:
clipper->SetHWnd(0, hMainWnd);

// 将clipper挂入主表面:
lpDDSMain->SetClipper(clipper);

// 删除clipper
clipper->Release();
}

此时,输入法的窗口就不会再闪烁了。

需要注意的是:表面挂接clipper后,就无法在这个表面上
使用Flip()和BltFast()函数了。所以,你必须要使用Blt()
函数来把BackBuffer上的内容拷贝到主表面上。
DarkPrince 2001-03-10
  • 打赏
  • 举报
回复
我怎么侦测到输入法窗口?我至少必须知道该裁减的区域呀。
谁能告诉我怎样得到当前APPLICATION的输入法窗口??我对输入法实在没有研究,
看了一些资料,但没有找到对系统输入法窗口控制的程序段...

ChenLee先生,能说详细一些么,关于你的方法...感谢

chenlee 2001-03-09
  • 打赏
  • 举报
回复
给主表面挂接一个IDirectDrawClipper就行了

8,323

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧