在MFC中,我想在绘图过程中生成一个模态对话框,用来吸收绘图过程中的所有消息

yingzijuntuan 2012-09-28 03:28:18
因为绘图的时候时间比较长,这段时间有时候会用鼠标瞎点点的,就产生了乱七八糟的消息,我想用非模态对话框都吸收掉。我原本想是在OnPreparePrinting和OnBeginPrinting之间生成模态对话框,但是绘图的过程中就不进去呀!求帮忙解决,这个是不是要用多线程编程呀?
...全文
63 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-03-21
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
傻X 2012-09-29
  • 打赏
  • 举报
回复
楼主想法挺创新的:

其实阻止鼠标消息
1.可以用钩子:

// 注册系统钩子 --- 用于 屏蔽 按键
Hook_setting = (HHOOK)SetWindowsHookEx(WH_GETMESSAGE,
(HOOKPROC)LauncherHook_setting,
theApp.m_hInstance,
0);


// 修改函数
LRESULT CALLBACK LauncherHook_setting(int nCode, WPARAM wParam, LPARAM lParam)
{

if(nCode == HC_ACTION)
{
PMSG pMsg = (PMSG) lParam;
if( (pMsg->message == WM_KEYDOWN) || (pMsg->message == WM_KEYUP) )
{
return true;
}
}

// 让其它全局钩子获得消息
return CallNextHookEx(Hook_setting, nCode, wParam, lParam);
}


2.在PretranslateMessage中把鼠标消息全部return TRUE掉。
yingzijuntuan 2012-09-29
  • 打赏
  • 举报
回复
但是,在Client区域还是可以点呀,我的意思是会产生鼠标点击的消息,因为我的画图很慢,所以如果鼠标点击消息过多的话会产生消息堵塞的。。。。。
qlizhang 2012-09-28
  • 打赏
  • 举报
回复
可以在绘图时把不能点的按钮变无效(使能变灰),绘图完成后再恢复。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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