一个比较少见的问题

PackChen 2007-12-27 03:48:46
本人属于菜鸟,所以只好使用模式对话框来模拟下拉菜单
现在的问题是
在模式对话框中点击了当前区域之外的范围,那么窗口标题栏会Flash并且系统发出B的一声,相信很多人都遇到过
我发现这个时候,WindowPosChanging会触发,但是只是对鼠标左键有效,对于右键却跟踪不出来
所以只好改了判断标题栏目闪烁的事件,但是又发现古怪的地方,就是在Win98的经典样式下,标题栏会闪烁7次,等于触发了7次
但是到了XP风格下,却找不到了
这里询问各位大虾,能否告知在模式对话框中点击了当前区域之外的范围会触发那个事件(包括鼠标左右键)
...全文
110 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ringphone 2008-02-27
  • 打赏
  • 举报
回复
其实你菜单出来后可以SetCapture,这样鼠标动作就都能知道了
ringphone 2008-02-27
  • 打赏
  • 举报
回复
WM_ACTIVATE
PackChen 2008-02-25
  • 打赏
  • 举报
回复
楼上的兄弟
试过了
不行
菜牛 2008-01-27
  • 打赏
  • 举报
回复
为何不用WM_KILLFOCUS消息?
PackChen 2008-01-26
  • 打赏
  • 举报
回复
不行
请各位帮帮忙
现在系统已经搞好了
再搞就麻烦了
而且使用From还可以实现Office2007中在菜单显示TextBox的效果
jwybobo2007 2007-12-27
  • 打赏
  • 举报
回复
应该用CMenu来做,很简单

CMenu menu; //载入事先定义的菜单
if (!menu.LoadMenu(IDR_MENU))//你必须确定资源中有ID为IDR_POPUP的菜单
{
MessageBox("菜单装载错误","错误",MB_ICONEXCLAMATION|MB_OK);
return 0;
}
CMenu* pMenu=menu.GetSubMenu(0);
CPoint pos;
GetCursorPos(&pos);
SetForegroundWindow();
pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd()); /**/

我随手弄的代码,希望对你有帮助,记得要添加资源菜单
Slin000 2007-12-27
  • 打赏
  • 举报
回复
既然是菜鸟, 干吧要搞这么复杂的东西呢?
使用CMenu来做不是很简单么?
去MSDN上看看CMenu的例子
superarhow 2007-12-27
  • 打赏
  • 举报
回复
建议不要用模式对话框做,用普通窗口+SetCapture来做还是比较完美的

15,979

社区成员

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

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