草庐IT

UI控件

全部标签

c++ - PostMessage 能否使工作线程中的变量更改在 GetMessage 之后在 UI 线程中可见?

我的问题实际上是,如果我在另一个线程中写一个变量,然后PostMessage到一个Wnd,UI线程中的GetMessage是否会与它同步,我可以安全地读取变量?背景是:我想使用PostMessage从后台线程更新UI,并且担心数据争用。我需要其他同步实用程序吗?谢谢。编辑:标题很乱,改一下。具体案例:假设我想更新一个std::string,它是一个全局变量。由于我在PostMessage之前更新了string,我可以在处理该消息的WindowProc中安全地读取string吗?我熟悉C++11多线程术语,例如happens-before、sequence-before、synchron

python - 在 Windows 中,如何从另一个窗口的控件中枚举和获取文本?

更具体地说-我有另一个正在运行的应用程序的窗口句柄。此应用程序在某处包含一个TListControl.UnicodeClass控件(我从Winspector了解到这一点)。我如何使用WindowsAPI和该窗口句柄遍历该列表控件中的所有项目并从所有项目中获取文本?您可以假设语言是C/C++,但实际上我将使用win32allforpython。对适当的API调用的引用会很棒。 最佳答案 您需要使用EnumWindows和EnumChildWindows进行枚举。参见here示例和使用信息/警告。对于窗口文本,一旦有了合适的HWND,您

windows - 如何禁用 Windows 编辑控件上的小触摸键盘

在支持平板电脑的Windows版本中,当编辑控件获得焦点时会出现一个小键盘图标。如果你触摸它,触摸键盘就会弹出。有没有办法关闭它?如果你有自己的触摸键盘,那会很不方便。我想为代码中的某些编辑控件禁用它,即。我不是在寻找Windows设置。吉尔 最佳答案 好吧,我想晚回答总比没有回答好,所以它来了:您可以为您的应用程序禁用Windows屏幕键盘。为此,请启动Regedit并导航到key[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TabletTIP\DisableInPlace]。您可以在此处创建一个新

c# - Windows 窗体设计器重命名复制/粘贴的控件

我在此处看到针对ASP.net提出和回答的类似问题HowdoIpreventVisualStudiofromrenamingmycontrols?但我在使用C#在VS2008中编写Windows窗体应用程序时试图阻止这种情况。我想复制/粘贴大量控件而不将它们称为Checkbox1等。我宁愿手动重命名它们,因为它只是对名称的一个小改动。 最佳答案 我使用的是VS2010RC1,而我的VS2008机器“宕机”,所以我不确定VS2008中是否有这个特殊功能(控件名称的就地编辑):但万一它是:打开菜单View/其他窗口:选择文档大纲View

c++ - 虚拟列表控件 (MFC)

我正在使用列表控件来显示vector中元素的表示。单击列表时,另一个控件会显示有关该元素的信息。元素的索引当前由它在控件中的索引确定,但是如果我想对结果进行排序或过滤,这将不再有效。有人告诉我可以使用虚拟列表控件,但MSDN不是很友好,有人可以告诉我如何为此使用虚拟列表控件吗? 最佳答案 坦率地说-将数据(数据vector中的位置)与列表控件中数据的呈现(列表ctrl中的位置)联系起来是我会远离的事情。在MFC中,每个控件都有一个“数据”DWORD成员变量——在MFC中编码时,我总是为添加的每个项目调用“SetItemData”,并

windows - 在 Windows Forms 窗体上动态添加控件

我正在尝试在Windows窗体窗体的行和列中动态添加一堆控件。例如,如果我有20个控件,我需要创建三列和n行。我如何实现这一点? 最佳答案 将TableLayoutPanel添加到您的表单。在运行时,使用new关键字实例化您的控件。将它们添加到tableLayoutPanel.Controls集合中。您可以将它们添加到特定的行和列,或者让面板让它们流入下一个可用的单元格。 关于windows-在WindowsForms窗体上动态添加控件,我们在StackOverflow上找到一个类似的问

windows - 为什么有些控件没有窗口句柄?

我想获得一些控件的窗口句柄来用它做一些事情(需要一个句柄)。控件位于不同的应用程序中。奇怪的是;我发现许多控件没有窗口句柄,例如Windows资源管理器中工具栏(?)中的按钮。只需尝试获取文件夹/搜索/(等)按钮的句柄。它只给了我0。所以..第一个问题:为什么有些控件没有窗口句柄?在他们心里,不都是控制着window吗?(只是谈论标准控件,就像我在Windows资源管理器中期望的那样,没有在Pane等上自定义绘制。)这引出了我的第二个问题:如果您无法获取它们的句柄,如何使用它们(例如使用EnableWindow)?非常感谢您的任何意见!编辑(附加信息):Windows资源管理器只是一个

适用于 Mac 和 Win 的 C++ 跨平台 UI 框架?

我正在寻找一个UI框架,它可以让我创建一个C++应用程序,在mac和win上看起来/表现都是原生的。我所说的native是指类似于IBM的AWT/SWTonJava的方法。六年前没有这样的东西,现在有吗?提前谢谢你。 最佳答案 我想到了Qt和wxWidgets。如果可以,请提一个建议:MacOSX用户对UI有一系列期望,其中大部分在Apple的人机界面指南中有详细说明。跨平台应用程序的外观和行为往往与native应用程序不同,用户会寻找并更喜欢native替代品。 关于适用于Mac和Wi

c++ - 第一次调用 FindWindowEx/EnumChildWindows 后是否缓存了控件树?

我注意到,如果您针对属于不在前台(即最小化)窗口的hWnd调用FindWindowEx或EnumChildWindows,则它们不会报告任何children。另一方面,如果我首先对正在查询的窗口调用SetForegroundWindow,然后调用FindWindowEx或EnumChildWindows,它们会报告所有子项.即使我感兴趣的窗口不在前台,下一次调用也会报告所有子项。它几乎是在第一次调用后进行某种缓存? 最佳答案 这是您自己的应用程序中的一个窗口,还是您正在调查第三方应用程序的功能?我猜应用程序只会在它第一次进入前台时创

c++ - 32 位应用程序中的 WebBrowser 控件在 window.open() 调用上启动 64 位 Internet Explorer

我有一个在Windows764位上运行的32位应用程序。该应用程序(用C++编写)托管一个WebBrowser控件。当要求WebBrowser控件弹出一个新窗口(通过javascriptwindow.open()调用)时,它会启动一个新的InternetExplorer进程。特别地,这个新的IE进程是一个64位的IE进程。由于网页喜欢Adob​​eFlash,不幸的是我需要确保启动的新IE进程是32位版本(这是我机器上的默认版本),以便可以显示Adob​​eFlash内容。有趣的是,IE本身(围绕WebBrowser/MSHTML的包装器)不会遇到这个问题,这意味着可以设置某种配置来提