如何修改左上角图标的菜单?

Benjiaming 2003-06-23 12:33:19
RT

使用 GetSystemMenu、DeleteMenu 等只能修改任务栏的右键菜单
...全文
68 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Benjiaming 2003-06-23
  • 打赏
  • 举报
回复
To NowCan:
增加和删除菜单中的 横线 的参数是什么?
SC_LINE?
tony808 2003-06-23
  • 打赏
  • 举报
回复
用API吧
Benjiaming 2003-06-23
  • 打赏
  • 举报
回复
真是的,浪费 100 分
这样就可以了,不过不知道有没有后遗症
void __fastcall TfrmMain::FormShow(TObject *Sender)
{
HMENU SysMenu = GetSystemMenu ( this->Handle, false );

// DeleteMenu(SysMenu,SC_CLOSE,MF_BYPOSITION);
// DeleteMenu ( SysMenu, SC_RESTORE, MF_BYCOMMAND );
// DeleteMenu ( SysMenu, SC_CLOSE, MF_BYCOMMAND );
// DeleteMenu ( SysMenu, SC_MAXIMIZE, MF_BYCOMMAND );
// DeleteMenu ( SysMenu, SC_MINIMIZE, MF_BYCOMMAND );
DeleteMenu ( SysMenu, SC_MOVE, MF_BYCOMMAND ); // 移动

EnableMenuItem ( SysMenu, SC_CLOSE, MF_DISABLED| MF_GRAYED ); // 关闭

DrawMenuBar ( this->Handle );
}
yuanhen 2003-06-23
  • 打赏
  • 举报
回复


学习!

NowCan 2003-06-23
  • 打赏
  • 举报
回复
http://asp.6to23.com/nowcan/tech/sysmenu.htm
chifengwatch 2003-06-23
  • 打赏
  • 举报
回复
gz
NowCan 2003-06-23
  • 打赏
  • 举报
回复
不可能,那就是系统菜单。而且是Form->Handle上的系统菜单。任务栏上的是Application->Handle的。
qrlvls 2003-06-23
  • 打赏
  • 举报
回复
你可以挂一个钩子解决这个问题,我只看过VC做过的
http://www.codeproject.com上有一个NewMenu的例子可以修改系统菜单
对于 C++Builder我只是初学者而已
jishiping 2003-06-23
  • 打赏
  • 举报
回复
这个说的是主菜单,就是BCB里的TMainMenu这个菜单。其实你修改了主菜单下的子菜单,也
是不用调用DrawMenuBar的。只有修改了上面的那条用户直接看到的那个菜单条,才需要调用
DrawMenuBar函数。
chifengwatch 2003-06-23
  • 打赏
  • 举报
回复
//这样好象也可以,加一个ApplicationEvents
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AppendMenu(GetSystemMenu(this->Handle, False),MF_STRING,100,"about...");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
if ( Msg.message == WM_SYSCOMMAND )
{
if ( Msg.wParam == 100 )
ShowMessage("about...");
}
Handled = false ;
}
//---------------------------------------------------------------------------
Benjiaming 2003-06-23
  • 打赏
  • 举报
回复
哦,我是看了 MSDN 才写 DrawMenuBar 的
Remarks
The application must call the DrawMenuBar function whenever a menu changes, whether or not the menu is in a displayed window.
jishiping 2003-06-23
  • 打赏
  • 举报
回复
To Benjiaming:
你上面的代码,DeleteMenu、EnableMenuItem 是可以的,没有问题。但是 DrawMenuBar
是多余的。DrawMenuBar 的是你修改了主菜单后才需要用它来重画主菜单的。
jishiping 2003-06-23
  • 打赏
  • 举报
回复
增加菜单中的横线
InsertMenu(hMenu, nPos, MF_BYPOSITION|MF_SEPARATOR, 0, "");
删除菜单中的横线(首先需要知道横线在菜单中的位置nPos)
RemoveMenu(hMenu, nPos, MF_BYPOSITION);

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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