|
|
1
8
除了这是一个Vista功能外,什么都没有 更新: 这个问题与并行程序集有关:这些函数仅存在于comctl32.dll版本6中,但是,出于兼容性的原因,Vista将加载早期版本,除非您另有说明。大多数人(包括我)一直采用的方法是使用清单。事实证明,这是一个棘手的问题,而且可能不是正确的解决方案,尤其是如果您正在编写的是一个库:您不必强制整个应用程序使用公共控件6。 正确的解决方案是 new activation 调用一个仅限Vista的API时的上下文。激活上下文将使用正确版本的comctl32.dll,而只保留应用程序的其余部分,不需要清单。 幸运的是,这很容易做到。一些已经存在的完整代码 MS Knowledgebase . 文章中的代码(Kb830033)按原样完成了这个技巧。 替代托管API: 可以在此处找到Vista任务对话框和任务对话框间接的完整包装: http://code.msdn.microsoft.com/WindowsAPICodePack 对于WPF,请使用以下内容: 从下载“vistabridge示例库” http://code.msdn.microsoft.com/VistaBridge 下载后,打开项目,然后构建它(如果要查看所有代码,请检查\library或\interop文件夹中的文件)。现在,您可以从vistabridge\bin\debug\中获取dll,并在项目中添加对它的引用,还必须为每个不同的vistabridge模块添加using语句。例如: 根据需要使用Microsoft.sdk.samples.vistabridge.interop或.library或.properties或.services。 vistabridge项目包括许多其他vista功能的API(如taskdialog、vista openfile和savefile对话框,当然还有aero glass效果),要尝试这些功能,请运行vistabridge项目。 |
|
|
2
3
使用任务对话框需要Windows Common Controls dll(comctl32.dll)的版本6!出于兼容性原因,应用程序默认不绑定到此版本。绑定到版本6的一种方法是将清单文件放在可执行文件(名为yourappname.exe.manifest)旁边,内容如下:
如果您不想拥有额外的独立文件,也可以将此清单作为Win32资源嵌入到可执行文件中(名称rt_manifest和id设置为1)。如果将清单文件关联到项目的属性中,Visual Studio可以为您完成这项工作。 |
|
|
3
0
基于almog.ori的答案(有一些孤立的链接),我对链接的代码做了一个小的更改,我困惑了几天: MS Knowledgebase 帮助( Archiv )完整的代码和我所做的采纳:
然后我用这种方式:
在里面
有关可能的更多信息
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |