好的,所以我真的不能想到一个总结这个的apropos标题.
IPrintPipelinePropertyBag接口具有AddProperty方法,该方法恰当地"将属性添加到属性包".
http://msdn.microsoft.com/en-us/library/aa506384.aspx
AddProperty([in,string] const wchar_t*pszName,[in] const VARIANT*pVar);
我们使用以下代码将字符串添加到属性包中.
CComVariant varProperty = CComBSTR(someString);
pPrintPropertyBag->AddProperty(L"SOME_PROPERTY", &varFilename);
Run Code Online (Sandbox Code Playgroud)
但是很明显,创建的CComBSTR和CComVariant在一段时间后超出了范围.我不确定PropertyBag是否处理字符串并制作自己的副本.由于我们可以在VARIANT中存储各种内容,因此情况并非如此.
假设没有处理字符串,我的问题是,在COM中执行此操作的模式是什么?我应该如何传递包含已分配字符串的VARIANT,使该字符串可用于其他线程,即使调用AddProperty的线程首先死亡,并正确地取消分配字符串?
好的,所以我浪费了一个小时的时间来寻找为什么我的无形WPF控件没有出现在Window中.
最后,我追溯到这样一个事实:我忘了在themes目录下的generic.xaml文件中添加ResourceDictionary条目.风格和类本身都没问题.
有没有办法追踪WPF内部的情况?如何跟踪样式如何加载(或未加载).我想这必须成为一大堆东西要看,但必须比检查每个文件的错别字或我忘记的东西更好.
(我已经搜索了其他问题,但主要针对特定情况)
谢谢!
我有一个应用程序调用一些其他实用程序应用程序来设置特定设备的一些设置.使用ShellExecuteEx调用该实用程序.
为了不混淆用户,最好将实用程序应用程序的窗口设置为我的主窗口.怎么做到这一点?
我试过的事情:
我有一个静态类,它包含winspool中的一些本机方法:
public static class WinSpool
{
[DllImport("winspool.drv")]
public static extern int OpenPrinter(string pPrinterName, out IntPtr phPrinter, IntPtr pDefault);
...
//some more methods here
}
Run Code Online (Sandbox Code Playgroud)
我想模仿它们进行单元测试,但是找不到这种模式.(每个人都避免使用静态类吗?)
我想,我即将解决我认为的难题.我需要多线程化生产者和消费者的管道.
所以我想从小做起.在不同的难度下,哪些练习问题对多线程练习有好处?(而不是你在不专注于并发的书中看到的不切实际的,不切实际的例子).
您会建议哪些书籍或参考文献专注于并发性并提供深入的问题和案例?
(我宁愿把重点放在我想解决这个问题.我只想问了很好的参考和样本的问题.这将是对其他用户更加有用.我不卡的问题.)
我有一个现有的COM Exe Server,以及调用它的VBA或.NET代码.我们希望无需安装或修改注册表即可使其工作,以便其计算机上不是管理员的其他用户可以使用它.
我们假设无法更改/修改COM Exe Server(昂贵).
问题1: 根据我在注册正在运行的EXE服务器中所做的工作,EXE服务器可以调用CoRegisterClassObject在类表中注册CLSID.这是否意味着客户端应该能够从那里获得CoGetClassObject?(甚至没有该类型/类的注册表项?)
问题2: 如果以上是正确的,我的EXE服务器使用CComModule(不建议使用,是的),我可以看到确实在调用CoRegisterClassObject.有没有办法验证类表,所以看到是否正确完成?
问题3:
这是我正在使用的片段.clsid和iid指的是相应的clsid和iid guids.它在CreateInstance调用中未注册接口(HRESULT异常:0x80040155)失败.这让我感到难过,任何可能出错的想法?
var factory = UnsafeNativeMethods.CoGetClassObject(
clsid,
RegistrationClassContext.LocalServer,
IntPtr.Zero,
typeof(UnsafeNativeMethods.IClassFactory).GUID)
as UnsafeNativeMethods.IClassFactory;
factory.CreateInstance(null, ref iid, out obj);
Run Code Online (Sandbox Code Playgroud) 我是需要弹药的开发人员.
如果用户选择卸载您的程序,您如何处理程序在HKEY_CURRENT_USER中保存的数据以及用户配置文件的其他部分?
该程序将用户数据(日志等)存储在用户文件夹中.客户希望卸载以删除所有用户的所有数据.同时,普通的非管理员用户应该可以进行卸载.
我无法找到白皮书,文档或其他说明不应该这样做.关闭是Raymond Chen的帖子:http: //blogs.msdn.com/oldnewthing/archive/2007/09/17/4948130.aspx
但博客文章是弱弹药.
备选方案:在安装期间创建%SYSTEMDRIVE%\ FooProgramData.所有用户都写入此文件夹.我知道这很难看.但这是我能想到的唯一可以满足"on-uninstall-all-files-must-be-cleared"要求的方法.
思考?我需要一个更好的备用(如果存在)或固体白皮书,文档或徽标要求,说卸载不应删除用户数据.
我们有这个错误,只有30%的时间用于Release版本.在WinDbg中打开崩溃转储(剪切"!analyze -v"输出):
FAULTING_IP:
+4
00000000`00000004 ?? ???
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000000004
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000008
Parameter[1]: 0000000000000004
Attempt to execute non-executable address 0000000000000004
ERROR_CODE: (NTSTATUS) 0xc0000005 -
The instruction at 0x%08lx referenced memory at 0x%08lx.
The memory could not be %s.
WRITE_ADDRESS: 0000000000000004
MANAGED_STACK:
(TransitionMU)
0000000024B9E370 000007FEEDA1DD38
mscorlib_ni!
System.Threading.ExecutionContext.runTryCode(System.Object)+0x178
(TransitionUM)
(TransitionMU)
0000000024B9DFB0 000007FF00439010 MyLibrary!DocInfo.IsStatusOK()+0x30
Run Code Online (Sandbox Code Playgroud)
现在,IsStatusOK()只调用PrintSystemJobInfo.Get(),但这似乎甚至没有出现在堆栈中.
关于如何调试这个的任何想法?我确定runTryCode()确实不是问题...但是......我被卡住了.
谢谢!(我真的在这里摸索).
我们都知道,作为开发人员,拥有一个好的笔记工具非常重要.
但是,OneNote和Evernote迫使我们被锁定在特定的供应商身上.
任何人都知道好的开源工具,甚至其他记录方式没有"锁定"?
编辑:我不应该指责自己.记笔记很容易.我希望能够写墨迹(我使用平板电脑),添加图像和草图GUI的想法.
在WPF应用程序中保存窗口位置和大小的最佳方法是什么?
目前,我正在保存WPF应用程序的窗口大小和位置.以下是我处理的事件:
(我从一个例子中复制了这个).
问题是,当窗口最小化并恢复时,将检索最后一个WindowClosing的设置.
现在,StateChanged事件在窗口最小化后触发,所以它似乎不是我需要的.
谢谢
因此,我们正在重新设计桌面应用程序,以便它可以与Windows 7的Touch Interface一起使用.我们已经查阅了UX准则.
对于UI的某些部分,有一些工具箱图标由于一些神秘的规则而被禁用(软件与硬件设备通信).我们禁用不适用的操作(由于某些条件),并让用户将鼠标悬停在工具图标上,以查看工具提示说明禁用该工具的原因.
由于触摸界面(Windows 7,iphone,..)没有"悬停",对于这个更好的模式/模型是什么?
谢谢!
我已经看到很多关于.NET 3.5优势的问题,但是这些问题更倾向于语言功能和更容易的开发.使用.NET 3.5是否有任何非开发人员优势?随着时间的推移,错误,修复,优势?
背景:
当使用以下XAML时,窗口大小不是5000x5000,而是一些小窗口,其中裁剪了按钮。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" >
<Button Width="5000" Height="5000">XXX</Button>
</Window>
Run Code Online (Sandbox Code Playgroud)
据我所知,大小我没有指定SizeToContent属性,默认值为“手动”,因此它将使用*窗口的大小由其他属性确定,包括宽度,高度,最大宽度,最大高度,最小宽度和最小高度。*从WPF Windows概述看来,其他那些属性是FrameworkElement :: MinHeight / Width和FrameworkElement :: MaxHeight。但是由于Mins的默认值为0,Maxs为Infinity,而Width / Height为Nan ....怎么回事?WPF在哪里获取窗口大小?
任何指向正确方向的指针将不胜感激。