当您的键盘形式获得焦点时,它接收的部分消息是失去焦点的窗口的句柄(wParam).做你需要做的事情并将焦点设置回失去焦点的窗口.
编辑:请参阅WM_SETFOCUS上的文档
编辑2:
此外,您可以在创建自定义表单时使用以下内容:
procedure TMainForm.CreateParams(var Params: TCreateParams) ;
//const WS_EX_NOACTIVATE = $8000000;
begin
inherited;
Params.ExStyle := Params.ExStyle + WS_EX_NOACTIVATE;
end;
Run Code Online (Sandbox Code Playgroud)
防止表单激活(从其他表单获取焦点).就像我在评论中提到的那样,你可能应该使用非窗口控制键.
我见过的唯一方法是使用虚拟键盘禁用窗口EnableWindow(hWnd, FALSE)
。
现在,如果窗口被禁用,您将不会收到鼠标消息,对吧?你必须选择:
WM_SETCURSOR
. 它甚至会发送到禁用的窗口,并且在 lParam 的高位字中您可以看到原始消息的标识符(WM_LBUTTONDOWN 等)。可以使用 读取光标的坐标GetMessagePos()
。SetWindowsHookEx(WH_MOUSE, ...)
。您将完全控制鼠标消息。 归档时间: |
|
查看次数: |
2302 次 |
最近记录: |