我现在是在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;
但是要鼠标指向菜单后,菜单才能改变为平面。请问该如何解决。
另问菜单弹出来以后,我该发送一个什么消息,使得鼠标还未选择菜单某一项,但第一个菜单总是缺省被选择了。
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;
但是要鼠标指向菜单后,菜单才能改变为平面。请问该如何解决。
另问菜单弹出来以后,我该发送一个什么消息,使得鼠标还未选择菜单某一项,但第一个菜单总是缺省被选择了。
总之很麻烦