能否使菜单(tmainmenu)自动下拉,而不需要经过鼠标点击?(50分)

  • 主题发起人 主题发起人 zyh16821cn
  • 开始时间 开始时间
Z

zyh16821cn

Unregistered / Unconfirmed
GUEST, unregistred user!
能否使菜单自动下拉,而不需要经过鼠标点击?
 
不明白,用键盘也可以啊。
 
能否通过某事件触发菜单,使其自动下拉
或通过一个按钮,点了按钮后,某菜单自动下拉,有办法实现吗?
 
用 mouse_event 发送虚拟点击应该可以
或者 用 keybd_event 发送一个 "Alt" 和一个 "下"
 
拦截 OnHint 事件,让它触发一个 PopupMenu,不就得了
 
beta,能否两个事件各给个实际的例子来参考参考,里面的参数搞不懂
 
我也想知道如何做????
 
TrackPopupMenu
The TrackPopupMenu function displays a shortcut menu at the specified location and tracks the selection of items on the menu. The shortcut menu can appear anywhere on the screen.
BOOL TrackPopupMenu(
HMENU hMenu, // handle to shortcut menu
UINT uFlags, // screen-position and mouse-button flags
int x, // horizontal position, in screen coordinates
int y, // vertical position, in screen coordinates
int nReserved, // reserved, must be zero
HWND hWnd, // handle to owner window
CONST RECT *prcRect // ignored
);

 
// 这个不好
procedure TForm1.Button1Click(Sender: TObject);
var
m:HMenu;
begin
m:=menu.Handle ;
m:=getsubmenu(m,0);
TrackPopupMenu(m,TPM_LEFTALIGN,10,10,0,handle,0);
end;

//主要是菜单项位置的确定,点出第一个菜单项
procedure TForm1.Button2Click(Sender: TObject);
var
p:TPoint;
begin
p.x:=5;
p.y:=0;
p:=clienttoscreen(p);
p.y:=p.y-5;
setcursorpos(p.x,p.y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
// 加个 up 也可以
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
 
后退
顶部