怎么样得到wm_lbuttondown消息消息的参数?求教
如下的程序,是一个光驱的软开关的程序,运行后,在任务栏出现一个图标,左键单击时,可以弹出光驱,右键单击可以关上光驱。中键单击关闭程序。现在有问题,看以下程序的问题提示!
想在中键按下时得到鼠标的位置,怎么办?
program nowindow;uses
windows, shellapi, Messages,dialogs, sysutils,
mmsystem,Graphics;function ppp(hwnd:hwnd;umsg:cardinal;wparam:wparam;lparam:lparam):lresult;stdcall;
begin
if umsg=wm_create then beep;//(220,220);
if umsg=2222 then
begin
case LParam of//自定义消息的处理过程
wm_lbuttondown:mcisendstring('set cdaudio door open wait',nil,0,0); //左键出光
wm_rbuttondown:mcisendstring('set cdaudio door closed wait',nil,0,0);//右键进驱
wm_mbuttondown:
begin
// showmessage(inttostr(loword(lparam)));//想在中键按下时得到鼠标的位置,怎么办?
postmessage(hwnd,wm_quit,0,0); //中键关闭应用程序
end;
end;
end;result:=defwindowproc(hwnd,umsg,wparam,lparam);
end;
{$R *.RES}var cdromicon:ticon; //定义图标变量
icondata:tnotifyicondata;
abc:twndclass;
www:hwnd;
msg:tmsg;
procedure cw;
begin
abc.lpfnwndproc:=@ppp;
abc.lpszclassname:='xyz';
registerclass(abc);
www:=windows.createwindow('xyz','xyz1',ws_overlappedwindow,
0,0,100,100,0,0,hinstance,nil);
end;
begin //运行程序,在任务栏成立一个图标,并响应鼠标的动作
cw;
CdRomIcon:= TIcon.Create;
CdRomIcon.LoadFromFile('F:\sheji\_icon图标\chicken02.ico');
IconData.hIcon := CdRomIcon.Handle;
IconData.cbSize := SizeOf(IconData);
IconData.Wnd :=www;
IconData.uID := 2;
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
IconData.uCallBackMessage := 2222;
IconData.szTip := '左出右入';
Shell_NotifyIcon( NIM_ADD, @IconData );
while getmessage(msg,0,0,0)=true do begin //接收到wm_quit时,值为0;即为假
translatemessage(msg);
dispatchmessage(msg);
end;
end上不了。只好用这种方法来发表。请见谅啊
如下的程序,是一个光驱的软开关的程序,运行后,在任务栏出现一个图标,左键单击时,可以弹出光驱,右键单击可以关上光驱。中键单击关闭程序。现在有问题,看以下程序的问题提示!
想在中键按下时得到鼠标的位置,怎么办?
program nowindow;uses
windows, shellapi, Messages,dialogs, sysutils,
mmsystem,Graphics;function ppp(hwnd:hwnd;umsg:cardinal;wparam:wparam;lparam:lparam):lresult;stdcall;
begin
if umsg=wm_create then beep;//(220,220);
if umsg=2222 then
begin
case LParam of//自定义消息的处理过程
wm_lbuttondown:mcisendstring('set cdaudio door open wait',nil,0,0); //左键出光
wm_rbuttondown:mcisendstring('set cdaudio door closed wait',nil,0,0);//右键进驱
wm_mbuttondown:
begin
// showmessage(inttostr(loword(lparam)));//想在中键按下时得到鼠标的位置,怎么办?
postmessage(hwnd,wm_quit,0,0); //中键关闭应用程序
end;
end;
end;result:=defwindowproc(hwnd,umsg,wparam,lparam);
end;
{$R *.RES}var cdromicon:ticon; //定义图标变量
icondata:tnotifyicondata;
abc:twndclass;
www:hwnd;
msg:tmsg;
procedure cw;
begin
abc.lpfnwndproc:=@ppp;
abc.lpszclassname:='xyz';
registerclass(abc);
www:=windows.createwindow('xyz','xyz1',ws_overlappedwindow,
0,0,100,100,0,0,hinstance,nil);
end;
begin //运行程序,在任务栏成立一个图标,并响应鼠标的动作
cw;
CdRomIcon:= TIcon.Create;
CdRomIcon.LoadFromFile('F:\sheji\_icon图标\chicken02.ico');
IconData.hIcon := CdRomIcon.Handle;
IconData.cbSize := SizeOf(IconData);
IconData.Wnd :=www;
IconData.uID := 2;
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
IconData.uCallBackMessage := 2222;
IconData.szTip := '左出右入';
Shell_NotifyIcon( NIM_ADD, @IconData );
while getmessage(msg,0,0,0)=true do begin //接收到wm_quit时,值为0;即为假
translatemessage(msg);
dispatchmessage(msg);
end;
end上不了。只好用这种方法来发表。请见谅啊
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货