草庐IT

失去焦点

全部标签

windows - 如何防止 CWnd 获得焦点?

我编写了一个MFC应用程序,需要一个不会将输入焦点从另一个窗口移开的按钮。不幸的是,当用户用鼠标单击按钮时,删除WS_TABSTOP样式没有帮助。当我阻止WM_LBUTTONDOWN时,我没有看到视觉按下指示,所以这也不起作用。 最佳答案 如果有一个特定的窗口您想保持焦点,您可以在按钮的OnLButtonDownCWnd::SetFocus()命令将焦点强制返回到您的窗口处理程序。如果您希望焦点恢复到多个窗口之一,您可以尝试子类化CButton并捕获当键盘焦点更改为按钮时发送的CWnd::OnSetFocus()消息。OnSetFo

c# - 在 Windows 启动时启动 C# 应用程序并保持焦点

这个问题在这里已经有了答案:KeepwindowontopandstealfocusinWinForms(5个答案)关闭8年前。我正在开发一个简单的程序来读取卡片或条形码并将其记录在数据库中。之前,我在VisualBasic中开发了相同的应用程序并且运行良好,但由于我们的服务器发生了很多变化,我们决定在C#中开发这个应用程序。我可以通过Windows将其快捷方式放在开始菜单的“启动”上来启动我的应用程序,但问题是它没有获得焦点,因此无法读取卡片和条形码,这样我的程序就毫无用处了。我们使用的机器运行的是WindowsXP和Windows7。在Windows启动时启动我的应用程序并保持焦点

windows - 返回键为具有焦点的按钮生成 IDOK

我对对话框中的按钮执行了SetFocus。该按钮获得虚线轮廓。当用户按下返回键时,对话框会收到一条IDOK消息,而不是我设置焦点时来自按钮的消息。在其他情况下也会发生同样的事情。为什么会这样?我怎样才能使返回充当按钮按下?纯C++Windows应用程序,没有MFC,没有NET。 最佳答案 功能,不是错误。[Enter]键操作标记为对话框默认按钮的按钮。使用.rc文件中的DEFPUSHBUTTON或BS_DEFPUSHBUTTON样式标志。这通常是“确定”按钮,因此返回IDOK是预期的。[Escape]键也很特殊,通常是[Cancel

windows - 在 VB.NET 中将焦点更改到另一个窗口

我正在使用VB.NET并且需要激活某个窗口。这可能吗?如果是,怎么办? 最佳答案 您需要使用Win32API来执行此操作。首先,通过调用FindWindow找到您想要置于最前面的窗口获取它的句柄,然后使用SetForegroundWindow将其带到前台的API。PInvoke包含这些方法的声明。 关于windows-在VB.NET中将焦点更改到另一个窗口,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

c++ - WM_SETFOCUS,获取刚刚失去焦点的应用

当我的WTLC++应用程序被激活或获得键盘焦点时,我需要确定先前激活/具有焦点的应用程序的窗口句柄。但是,WM_SETFOCUS和WM_ACTIVATE消息的窗口句柄(LPARAM)都是NULL(XP,32位)。当我的应用程序被激活时,如何确定刚刚失去焦点的应用程序?有没有一种简单的方法可以做到这一点,或者我需要滚动一个特殊的CBTHook? 最佳答案 要准确查看正在发送的消息及其参数的简单方法是启动Spy++并将其设置为记录消息,同时按Alt+Tab转到另一个窗口。与您发现的一致,WM_SETFOCUS和WM_ACTIVATE的l

windows - 编剧如何从焦点窗口获取文本信息?

屏幕阅读器通过我认为是WindowsAPI的方式访问其他程序中的信息。任何人都可以评论这是如何完成的并提供一些文档的链接吗?有什么我应该注意的严重限制吗?如果您了解这在其他操作系统中的工作原理,您也会感兴趣。 最佳答案 大多数屏幕阅读器使用UIAutomation访问其他程序中的信息。一些应用程序不以这种方式提供辅助信息(糟糕的程序员!糟糕!糟糕!),所以一些屏幕阅读器使用mirrordrivers拦截低级绘图操作,然后从那里重新生成应用程序的信息。(我不推荐这样做;它很痛苦,容易挂起你的系统,并且在Windows8及更高版本中不受

c# - 将窗口保持在前台(即使它失去焦点)

在我的应用程序(C#,Windows窗体)中,我有一个电话信息屏幕:如果有来电,则会显示一个窗口,其中包含向调用者提供的附加信息。此窗口应在前台打开,并且即使用户正在另一个窗口中书写也应停留在那里(这样用户仍会看到有关来电的信息)。首先我使用了BringToFront-但这并不是在所有情况下都有效(例如,当主应用程序不在前台时)。现在我正在使用BringToFront和user32.dll函数BringWindowToTop->可以工作,但如果窗口失去焦点,它就在后台。我如何实现这种行为? 最佳答案 我想你想将表单设置为TopMos

c++ - SHBrowseForFolder 返回时如何重新获得焦点

我目前正在使用SHBrowseForFolder()打开浏览文件夹窗口,但是当取消/确定被按下。我读到我应该在对话框关闭之前重新启用我的主窗口,但那到底在哪里?有什么想法吗?voidbuttonPush(HWNDhWnd){EnableWindow(hWnd,FALSE);BROWSEINFObi={0};TCHARszDir[MAX_PATH]={0};LPITEMIDLISTpid=NULL;LPMALLOCpMalloc=NULL;if(SUCCEEDED(SHGetMalloc(&pMalloc))){ZeroMemory(&bi,sizeof(bi));bi.hwndOwne

.NET:屏幕保护程序配置对话框所有者和预览焦点

我已经创建了一个屏幕保护程序(C#、.NET4.0,如果重要的话),但我有几个问题(虽然在更美观的层面上)。这些问题可能很容易解决,但我一直觉得自己从未使用过Win32API,因此当涉及到这一点时,我很容易忽略明显的问题。Q1:我是这样设置小预览窗口的:SetParent(Handle,hwndParent);SetWindowLong(Handle,GWL_STYLE,newIntPtr(GetWindowLong(Handle,GWL_STYLE)|WS_CHILD));RectangleparentRect;GetClientRect(hwndParent,outParentRe

c# - 当其他控件获得焦点时隐藏表单

这个问题与thismyquestion有关.现在我在类里面有了表格,当用户单击按钮时,我会显示(或隐藏)表格。没关系。但是当我使用原始表单移动或单击原始表单中的某处时,我想隐藏表单。新形式位于原始形式之后。我正在尝试像lostfocus和其他事件,但它没有帮助。所以我想我需要一些技巧来检查我的控制是否有父形式(原始形式)或其他一些黑客的点击。我知道最好的办法是我输入代码,但我有很多行,所以我认为最好的方法是,如果你以一般方式帮助我,然后我尝试应用到我的应用程序。 最佳答案 您可以使用全局鼠标和键盘来完成hook.事实上,它已包含在C