我有一个快速的问题。我使用 MSDN 中的窗口 api 创建了一个标准窗口,创建了一个窗口站点。我希望程序做的是更改当我按下键盘上的键时鼠标光标所在窗口的标题。为此,我安装了一个低级鼠标挂钩,如下所示:
LRESULT CALLBACK LowLevelMouseProc(__in int nCode, __in WPARAM wParam, __in LPARAM lParam) {
MSLLHOOKSTRUCT* p = (MSLLHOOKSTRUCT*)lParam;
HWND hiWnd = WindowFromPoint(p->pt); //Get a handle to the top-most window
ScreenToClient(hiWnd, &p->pt); //Converts the cursor position from screen to the specified window
char buf[33];
switch (wParam) {
case WM_MOUSEMOVE:
snprintf(buf, sizeof(buf) - 1, "X:%ld, Y:%ld", p->pt.x, p->pt.y); //Put the cursor coordinates into a char buffer
SendMessage(hiWnd, WM_SETTEXT, 0, (LPARAM)buf); //Send a message to the other window to change the title
break;
}
return CallNextHookEx(0, nCode, wParam, lParam);
}
调用鼠标钩子后,只有我的程序会更改文本。还有,文字是一堆汉字,不是一两个,而是一堆这样的:
藡覶 跾 瑍痸碚 齫儽戃 羭聧蔩, 圪妀 跾 鶀嚵巆 堔埧娾 爂犤繵 摿斠榱 軥軱逴 潫 徖梜, 薍薝
我是否必须弄乱前景窗口而获得背景窗口?还是当前鼠标位置所在的窗口?我会假设
ScreenToClient(hiWnd, &p->pt)
谢谢你们的帮助!