问题标签 [propertysheet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
21566 浏览

c++ - 我如何强制我的应用程序出现在前面并集中注意力?

我正在开发一个应用程序,它恰好是我也在开发的安装程序的引导程序。该应用程序进行了几次 MSI 调用以获取我需要的信息,以便将作为我的应用程序主窗口的向导组合在一起,这会导致在收集信息时打开一个进度窗口,然后在完成后消失。然后设置并启动向导。我的问题是向导(从 CPropertySheet 派生)不想在我不添加一些调用的情况下出现在最前面并成为活动应用程序。

我已经在我的 OnInitDialog() 方法中使用以下代码解决了将其置于最前面的问题:

我的问题是我还没有弄清楚如何让窗口自动激活(即,让自己成为焦点)。SetFocus() 在这种情况下不起作用。我需要一些东西来强制窗口到 Z 顺序的顶部并激活它,最好是在尽可能少的调用中。

我的猜测是 MSI 调用在开始时打开的进度窗口导致主窗口出错,但我无法阻止该窗口出现。此外,隐藏它是没有意义的,因为它让用户在主窗口到达之前知道发生了什么。

0 投票
3 回答
1853 浏览

winapi - 页面处理后如何响应 PropertySheet 的 OK 或 Apply 按钮?

PropertySheetAPI 允许您定义一个PropSheetProc可以(在 Windows XP 及更高版本上)在按下 OK 或 Apply 按钮时接收消息。这使您可以在单击这些按钮之一时进行处理。

但是,在各个属性页通过其各自的对话过程接收通知之前调用此处理程序。PSN_APPLY我想在处理完这些通知进行处理,最好没有丑陋的黑客攻击。我该怎么做呢?

背景:我将我的配置存储在一个 中struct,并且各个页面struct在应用时都会修改其中的一部分。然后,在写入这些值之后,我想struct一次应用所有设置,而不是从每个属性页重新应用所有设置。

0 投票
5 回答
968 浏览

c++ - 包装一个属性表;如何处理回调?

我正在编写一个(非托管)C++ 类来包装 Windows PropertySheet。本质上,是这样的:

构造函数只是初始化d_header成员:

之后,我可以以模态方式显示它:

现在的问题是,因为回调是静态的,所以它不能访问包装类。如果这是一个普通窗口,使用 aWindowProc而不是 a ,我可以使用inPropSheetProc将一些额外的数据附加到窗口,我可以在其中存储一个指向包装器的指针,就像在这篇文章中一样。但属性表不提供此功能。cbWndExtraWNDCLASS

此外,因为属性表是模态显示的,所以我不能在实际窗口的创建和销毁之间执行任何代码,除非该代码是通过回调或表的窗口过程之一执行的。

到目前为止,我想出的最佳解决方案是,在显示属性表之前,将指向包装类的指针存储在全局变量中。但这假设我一次只显示一个属性表,无论如何都非常难看。

有谁知道如何解决这个问题?

0 投票
1 回答
1074 浏览

eclipse-plugin - 关于Eclipse插件:如何实现这样的属性视图?

我想在 PropertyView/PropertySheet 中显示一组对象,就像这样:

替代文字

怎么做?谢谢。

0 投票
3 回答
6105 浏览

visual-c++ - 使用 CMake 添加 Visual C++ 属性表

我目前正在将一个 gcc 项目移植到 Visual C++。它在 CMake 文件中定义,并且我创建了一个 Visual C++ 属性表以帮助提高兼容性 (GccCompat.props)。每次 CMake 重新生成 Visual C++ 项目文件时,都必须手动添加属性表,因为我不知道如何自动添加它。所以,问题是:

如何告诉 CMake 向生成的 Visual C++ 解决方案添加属性表?

0 投票
1 回答
710 浏览

winapi - 在运行时将控件添加到属性表(没有对话框模板)

据我所知,您通常在 Win32(我使用的是 API,而不是 MFC)编程中创建属性表的方式是,每个标签页都有一堆对话框模板,然后用它们制作属性表。我已经阅读了有关“在内存中”创建对话框模板的信息,但我不希望这样做。如何在运行时以编程方式将控件添加到属性表,就像您可以在运行时创建BUTTON并添加到窗口一样?

0 投票
1 回答
671 浏览

c++ - PropertySheet 选项卡在单击时关闭

我正在使用 Windows API 制作一个 PropertySheet 控件,由于某种原因,当我单击它们时选项卡正在关闭。

例如,如果我添加 4 个选项卡:

然后,如果我单击除活动选项卡之外的任何选项卡(在这种情况下没有任何反应),它将变为:

如果我单击非活动选项卡,它就会消失,只剩下一个选项卡。

我正在使用内存中的对话框模板创建选项卡,创建如下:

然后像这样创建 PropertySheet:

PROPSHEETHEADER psh;

并像这样添加四个页面:

最后,这是我的 DialogProc:

但由于某种原因,“嘿”永远不会显示。此外,发送带有任何索引的 PSM_INDEXTOHWND 总是返回 NULL。有谁知道为什么会这样?

0 投票
1 回答
214 浏览

c++ - 属性表页面的处理程序抛出的异常

我想通过顶级应用程序的 try-catch 块而不是在属性表页面的处理程序(例如 OnInitDialog 处理程序)中捕获和处理异常。因此,在下面的代码中,这些异常应该在 catch (...) 块中处理。

但是,当 OnInitDialog 引发异常时,在运行 Windows 析构函数后会出现一个断言(在调试模式下)。即使我在 CMyPropertySheet 析构函数中调用 EndDialog(m_hWnd, IDCANCEL),断言仍然存在。您能否帮助检测丢失或损坏的内容?我使用 WTL。我的属性表 claa 派生自 CPropertySheetImpl。

谢谢。

0 投票
1 回答
532 浏览

c++ - 属性表数据验证

当用户单击属性表上的确定或应用按钮并且程序确定某些页面上的数据无效时,如何使包含错误的页面与描述错误的消息框一起显示?

目前,执行验证的过程在处理 PSN_APPLY 通知时执行以下操作。

如果当前显示正在执行验证 (A) 的页面,但如果正在显示其他页面 (B),则会出现消息框并显示该页面 (B),然后当消息框被回答时,页面显示验证错误 (A)。我考虑过设置一些标志,以便当该页面 (A) 收到 PSN_SETACTIVE 通知时,它会显示消息框,但这似乎有点做作。

c++ 中的 Win32 API,没有 MFC,没有 NET,没什么花哨的。

0 投票
1 回答
3712 浏览

winapi - 使用 WINAPI 示例的对话框中的属性表(不使用 MFC)

谁能指出我使用 WINAPI(不是 MFC)在对话框中嵌入属性表的 WINAPI 示例?