再次修改 屏蔽、修改ToolBar的右键菜单

之前写的 屏蔽、修改ToolBar的右键菜单 小文章。

经过使用发现问题:

 

 

当应用程序启动时工具条停靠在Mainframe上,通过鼠标拖拽工具条,在右键显示context菜单可以修改菜单项的caption。

但是如果用用启动时工具条就漂浮在mainframe的工作区中。上就不能正确修改菜单项的caption。

 

 

经过分析通过Lbuttondown/doublelbuddown来来修改工具条的系统菜单。但如果一开始就浮动时则不响应LBDWON/LDBDOWN.

 

 

所以改变修改菜单项的师及。

通过查找网上,msdn等发现消息ON_WM_WINDOWPOSCHANGED可以买足要求

具体代码如下

 

 

此举会在相应的头文件里添加声明
public:
 afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
并在类的实现文件里做如下修改
------在消息映射里添加:
ON_WM_WINDOWPOSCHANGED()
---------并添加如下函数定义
void ****::OnWindowPosChanged(WINDOWPOS* lpwndpos)
{
 CToolBar::OnWindowPosChanged(lpwndpos);

if (IsFloating()) //is toolbar floating

{

CWnd* pMiniFrame;

CWnd* pDockBar;

 

pDockBar = GetParent();

pMiniFrame = pDockBar->GetParent();

CMenu* pMenu = pMiniFrame->GetSystemMenu(FALSE);

WORD langID = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);

if(langID == GetThreadLocale())

{//英文版

pMenu->ModifyMenu(SC_MOVE, MF_BYCOMMAND|MF_STRING,MF_BYCOMMAND|SC_MOVE, "Move(&M)");

pMenu->ModifyMenu(SC_CLOSE, MF_BYCOMMAND|MF_STRING,MF_BYCOMMAND|SC_CLOSE, "Hide(&H)");

}

 

//extreme way of re-painting the toolbar

pMiniFrame->ShowWindow(SW_HIDE);

pMiniFrame->ShowWindow(SW_SHOW);

}

}
 
经过测试成功。感谢NorthTibet &&http://tech.ddvip.com/2006-04/11442553803822.html
 
 
 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值