又一个难题?
请问在Delphi中,如果我使用了不规则窗口,那么我如何用一个小按钮来激活原来用鼠标左键单击窗口左上角那个图标的系统菜单? 问题点数:100、回复次数:7Top
1 楼longx()回复于 2000-01-28 09:17:00 得分 30
sysMenu:=GetSystemMenu(Application.Handle,FALSE);
TrackPopupMenu(sysMenu,TPM_LEFTBUTTON,200,100,0,Handle,0);Top
2 楼Firing_Sky(火的天空)回复于 2000-01-28 09:41:00 得分 0
用Sendmessage来模仿关闭按钮Top
3 楼kxy(手举穿肠毒药,怀抱刮骨钢刀)回复于 2000-01-28 13:21:00 得分 0
同意longx
得到systemMenu后,自己加上.Top
4 楼heart4u(为你心动)回复于 2000-01-28 22:20:00 得分 0
想有Sendmessage的朋友你们自己试一下!下面的语句有什么效果?
procedure TForm1.Button1Click(Sender: TObject);
type
ts=record
case shortint of
0:(x,y:smallint);
1:(z:longint);
end;
var
p1:ts;
begin
p1.x:=form1.left+15;
p1.y:=form1.top+15;
sendmessage(form1.handle,WM_NCHITTEST,0,p1.z);
sendmessage(form1.handle,WM_NClBUTTONDOWN,defwindowproc(form1.handle,WM_NCHITTEST,0,p1.z),p1.z);
sendmessage(form1.handle,WM_NCHITTEST,0,p1.z);
sendmessage(form1.handle,WM_NClBUTTONUP,defwindowproc(form1.handle,WM_NCHITTEST,0,p1.z),p1.z);
end;Top
5 楼heart4u(为你心动)回复于 2000-01-28 22:24:00 得分 0
longx:你的这个办法不错但显示的菜单项不全,你可以试试,另外也不是在按钮的上面显示出来的你在改进一下100分就是你的了!
procedure TForm1.Button2Click(Sender: TObject);
var
sysMenu:Thandle;
begin
sysMenu:=GetSystemMenu(Application.Handle,FALSE);
TrackPopupMenu(sysMenu,TPM_LEFTBUTTON,200,100,0,Handle,0);
end;Top
6 楼longx()回复于 2000-01-29 08:47:00 得分 70
只要把应用程序的句柄改成窗口句柄得到的菜单就全了,另外用
GetCursorPos()就可得到当前鼠标位置了。
procedure TForm1.Button1Click(Sender: TObject);
var
sysMenu:HMENU;
pos:TPoint;
begin
GetCursorPos(pos);
sysMenu:=GetSystemMenu(Handle,FALSE);
TrackPopupMenu(sysMenu,TPM_LEFTBUTTON,pos.x,pos.y,0,Handle,0);
end;Top




