托盘程序问题,如何获得当前鼠标的屏幕坐标?
cchon 2004-04-04 10:41:59 我的这段程序,鼠标的x坐标取的好象不对!
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
static HINSTANCE hInstance;
static HMENU popMenu,hMenu;
static POINT pt;
char buff[50];
switch(msg)
{
case WM_CREATE:
hInstance=((LPCREATESTRUCT)lParam)->hInstance;
hMenu=LoadMenu(hInstance,MAKEINTRESOURCE(IDR_TRAY_MENU));
popMenu=GetSubMenu(hMenu,0);
return 0;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_ABOUT_DIALOG:
DialogBox (hInstance, MAKEINTRESOURCE(IDD_TESTTRAY_DIALOG), hwnd, AboutDlgProc) ;
return 0;
case IDM_EXIT:
SendMessage(hwnd,WM_DESTROY,0,0);
return 0;
}
return 0;
case WM_LBUTTONDOWN:
pt.x=LOWORD(lParam);
pt.y=HIWORD(lParam);
wsprintf(buff,"x is %d",pt.x);
MessageBox(NULL,buff,"",MB_OK);
return 0;
case WM_SIZE:
if(wParam==SIZE_MINIMIZED)
{
myTray.hWnd=hwnd; //把当前窗口加到SysTray
myTray.AddIcon();
ShowWindow(hwnd,SW_HIDE);
}
return 0;
case TRAY_NOTIFYICON: //NOTIFYICONDATA.uCallbackMessage
switch(lParam)
{
case WM_RBUTTONDOWN:
pt.x=LOWORD(lParam);
//pt.y=HIWORD(lParam);
ClientToScreen(hwnd,&pt);
/*这一句:menu 没有显示在鼠标的当前位置*/
TrackPopupMenu(popMenu, TPM_RIGHTALIGN|TPM_LEFTBUTTON, pt.x, GetSystemMetrics(SM_CYSCREEN)-50, 0, hwnd, NULL) ;
return 0;
case WM_LBUTTONDBLCLK:
myTray.DeleteIcon();
ShowWindow(hwnd,SW_SHOW);
return 0;
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,msg,wParam,lParam);
}