我正在考虑编写一个新的Windows GUI应用程序,其中一个要求是应用程序必须响应迅速,加载速度快,内存占用少.
我已经将WTL用于我之前使用此类要求构建的应用程序,但由于我在日常工作中一直使用.NET,因此返回WTL变得越来越痛苦.我对这个应用程序使用.NET不感兴趣,因为我仍然发现较大的.NET UI缺乏性能,但我有兴趣为UI使用更好的C++框架 - 比如Qt.
在开始之前我想要确定的是,我不会在性能方面对此感到后悔.
那么:Qt快吗?
我将尝试通过我希望接近匹配的示例来限定问题:我当前的WTL应用程序是程序员的记事本.我正在研究的当前版本重约4mb的代码,用于32位版本的单一语言翻译版本.在现代快速PC上加载需要1-3秒,这很重要,因为人们经常启动它以避免IDE等.一旦你编辑了一个内存占用,通常在64位Win7上12-20 mb而.您可以不间断地运行应用程序,将其保持最小化,无论如何,当您切换到它时,它总会立即引起注意.
为了争论,我想说我想将我的WTL应用程序移植到Qt,以便将来可能的跨平台支持和/或更简单的UI框架.如果不与Qt的这种性能水平相匹配,我想接近.
我的Chrome应用程序仅在以自助服务终端模式运行时才会遇到问题.有没有办法连接调试器或为Kiosk模式应用程序启用检查器?
对于IIS6,我可以使用Wix中的IIS帮助程序来安装这样的Web应用程序:
<iis:WebAppPool
Id="AP_MyApp"
Name="My Application Pool"
Identity="networkService" />
<iis:WebApplication
Id="WA_MyApp"
Name="MyApp"
WebAppPool="AP_MyApp">
<iis:WebApplicationExtension
CheckPath="no"
Executable="[NETFRAMEWORK20INSTALLROOTDIR]aspnet_isapi.dll"
Verbs="GET,HEAD,POST"/>
</iis:WebApplication>
Run Code Online (Sandbox Code Playgroud)
不幸的是,这对IIS7不起作用.我们不想使用aspnet_isapi.dll机制,而是希望集成管道处理请求路由.此脚本创建的应用程序池处于经典模式而非集成模式,因此没有任何处理程序可以正常运行.
如何在IIS 7上正确安装MVC应用程序?
如何添加点击处理程序HorizontalPanel?
它适用addDomHandler()于较新的GWT版本,但我不得不降级到GWT 2.0.4,这是不支持的.我过去常常这样做:
horizontalPanel.getWidget(1).addDomHandler(someClickHandler,ClickEvent.getType());
//or
horizontalPanel.addDomHandler(someClickHandler, ClickEvent.getType());
Run Code Online (Sandbox Code Playgroud) 我已经尝试了一段时间为ASP.NET MVC中的UserViewControl编写单元测试.我想得到看起来像这样的代码:
[TestMethod]
public void HaveControlToDisplayThings()
{
var listControl = new ControlUnderTest();
var viewData = new ViewDataDictionary<IList<string>>(this.repo.GetMeSomeData());
// Set up a ViewContext using Moq.
listControl.SetFakeViewContext(viewData);
listControl.ViewData = viewData;
listControl.RenderView(listControl.ViewContext);
// Never got this far, no idea if this will work :)
string s = listControl.ViewContext.HttpContext.Response.Output.ToString();
Assert.AreNotEqual(0, s.Length);
foreach (var item in this.repo.GetMeSomeData())
{
Assert.IsTrue(s.IndexOf(item) != -1);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,无论我尝试什么,我都会从RenderView内部得到错误.这是由静态HttpContext.Current对象无用引起的(据我所知) - 我从中得到NullReferenceException了System.Web.UI.Page.SetIntrinsics.
我尝试使用Phil Haack的HttpSimulator,它给了我一个HttpContext对象,但我发现我还需要指定一个假HttpBrowserCapabilities对象来进一步:
Subtext.TestLibrary.HttpSimulator simulator = new HttpSimulator();
simulator.SimulateRequest();
var browserMock = …Run Code Online (Sandbox Code Playgroud) TL; DR
Objective-C app与静态库链接,动态链接Boost Filesystem.可以使用终端从输出目录运行应用程序,但尝试从Xcode调试器或Finder运行会出错dyld: Library not loaded: libboost_filesystem.dylib <snip> Reason: image not found.
问题
在我的Xcode项目中,我有一个如下所示的结构:
MainProject (Objective-C)
- static_lib_that_uses_filesystem (C++)
Run Code Online (Sandbox Code Playgroud)
为了获得所有链接,我将libboost_system和libboost_filesystem dylibs添加到MainProject中的"Link Binary with Libraries"构建阶段.
当我尝试从Xcode或Finder运行应用程序时,我得到:
sharedlibrary apply-load-rules all
warning: Unable to read symbols for libboost_filesystem.dylib (file not found).
warning: Unable to read symbols from "libboost_filesystem.dylib" (not yet mapped into memory).
warning: Unable to read symbols for libboost_system.dylib (file not found).
warning: Unable to read symbols from "libboost_system.dylib" (not yet mapped into memory).
[Switching to process 43957 …Run Code Online (Sandbox Code Playgroud) 我试图找到一种简单的方法来改变WTL或普通Win32代码中的文本和背景listview以及treeview控件的颜色.
我真的不想为这些控件实现完整的所有者绘图,只需更改使用的颜色.
我想确保图像仍以适当的透明度绘制.
有什么建议?
考虑以下代码行:
private void DoThis() {
int i = 5;
var repo = new ReportsRepository<RptCriteriaHint>();
// This does NOT work
var query1 = repo.Find(x => x.CriteriaTypeID == i).ToList<RptCriteriaHint>();
// This DOES work
var query1 = repo.Find(x => x.CriteriaTypeID == 5).ToList<RptCriteriaHint>();
}
Run Code Online (Sandbox Code Playgroud)
因此,当我将实际数字硬连接到lambda函数时,它工作正常.当我将捕获的变量用于表达式时,它返回时出现以下错误:
从对象类型ReportBuilder.Reporter + <> c__DisplayClass0到已知的托管提供程序本机类型不存在映射.
为什么?我该如何解决?