delphi - 避免窗口获得焦点

标签 delphi winapi

我正在开发虚拟键盘,问题是当我按下虚拟键盘上的某个键时,需要发送数据的窗口会失去焦点。我怎样才能避免这种情况?

最佳答案

当键盘窗体接收焦点时,它接收的部分消息是失去焦点的窗口的句柄 (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;

防止您的表单激活(从其他表单获取焦点)。就像我在评论中提到的那样,您可能应该使用非窗口控件作为按键。

关于delphi - 避免窗口获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8125108/

相关文章:

delphi - 按键在菜单循环中丢失

delphi - FindFirst() 报告的奇怪属性值,Attr = 2080

delphi - 在Delphi中设置表单的背景图片

c++ - 多线程和临界区使用 - C++

c++ - 更改 key 后的 "Refreshing"Windows 注册表

Delphi TImageList 位图更改

delphi - Delphi中使用SetLength发生内存不足异常时如何释放内存

c++ - 如何访问 Windows shell 上下文菜单项?

winapi - CB_GETLBTEXT 通知程序

c - 按位运算和填充字节在一起