菜单自画时如何将菜单边框改为平面

fj218 2004-06-20 11:43:18
我现在是在ONDrawItem事件中用了以下方法:
mWnd := WindowFromDC(ACanvas.Handle);
if mWnd <> form1.Handle then
begin
cTemp := TCanvas.Create();
cTemp.Handle := GetDC(0);
Windows.GetWindowRect(mWnd, rMenu);
cTemp.Brush.Color := RGB(120, 120, 120);
cTemp.FrameRect(rMenu);
InflateRect(rMenu, -1, -1);
cTemp.Brush.Color := RGB(240, 240, 240);
cTemp.FrameRect(rMenu);
InflateRect(rMenu, -1, -1);
cTemp.FrameRect(rMenu);
ReleaseDC(0, cTemp.Handle);
cTemp.Free();
end;
但是要鼠标指向菜单后,菜单才能改变为平面。请问该如何解决。
另问菜单弹出来以后,我该发送一个什么消息,使得鼠标还未选择菜单某一项,但第一个菜单总是缺省被选择了。
...全文
154 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcrawller 2004-07-15
  • 打赏
  • 举报
回复
UP,我也想知道
fj218 2004-07-15
  • 打赏
  • 举报
回复
还是要靠自己。这个问题我已自己解决。只是不能解决在Win9X下显示边框阴影的问题。不过XPMENU也没有正确解决这个问题。
fj218 2004-06-20
  • 打赏
  • 举报
回复
我不怕麻烦,就怕不会。之所以复杂,所以才提问。我查看了很多资料,对这个问题都没有涉及。我也看过XPMENU的源码,它是发送一个只定义的消息,但这里我看不懂。请高手耐心指教。
alpha15 2004-06-20
  • 打赏
  • 举报
回复
up一下
xzhifei 2004-06-20
  • 打赏
  • 举报
回复
要是有这么简单的话,D7的XP菜单就不会做成另一个控件了

要在菜单显示时得到菜单的HANDLE,然后得到它的区域,然后再在它上面把已经画好的边框上再画一次
总之很麻烦

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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