我开始在家里使用visual studio c ++ express 2008,但其中没有ATL.
如何将ATL添加到visual studio c ++ express 2008?
我是否仍然应该使用WTL来编写Windows应用程序?我真的很喜欢它是如何编写的,但有人知道它是否仍然保持?(也许有人有非正式维护的端口?)
如果不建议WTL编写新的Windows应用程序,那么我可以查找和使用哪些新框架?
我正在Win32 + WTL中进行一些编程,我对可用的错误类型感到困惑.
通常,我想检查错误,并将其提供给AtlGetErrorDescription(调用FormatMessage).
我的问题是:
有什么区别:
DWORD
,归来GetLastError
.HRESULT
,由例如CAtlFile
包装器返回,HRESULT_FROM_WIN32
用于转换DWORD
.LSTATUS
,例如通过返回RegCreateKeyEx
.我可以提供哪些类型的错误FormatMessage
?它的签名表示它接受HRESULT
,但有很多例子GetLastError
直接传递返回值FormatMessage
.
我对现代Windows软件如何用C++编写非常感兴趣.我问过曾经从事Windows软件工作的朋友,他告诉他最后的工作是MFC,然后是WTL.他说MFC不再是现代的,但仍然使用WTL,但他不太了解.他还说WTL不是那么现代,在此之前他用纯Windows API编程.
如何为Windows Vista或Windows 7编写软件?你还在使用WTL吗?那么MFC和纯Windows API呢?或者现在有其他图书馆吗?
我不太了解它,但是在编写现代Windows软件时,C#还是其他.NET语言取代了C++?
我知道"WTL 建立在 ATL上",但这在实际意义上是什么意思?
ATL在功能方面是WTL的子集吗?(即ATL中的所有功能是否也存在于WTL中?)我注意到维基百科声称ATL的发展状态是"当前",而WTL的最新版本是从2009年中期开始.这是否意味着如果我想使用Glass/Aero和其他Windows 7功能编写Windows 7软件,那么我无法用WTL做到这一点?ATL怎么样?
在ATL和WTL中编写程序是否有任何性能/内存差异?
我试图找到一种简单的方法来改变WTL或普通Win32代码中的文本和背景listview
以及treeview
控件的颜色.
我真的不想为这些控件实现完整的所有者绘图,只需更改使用的颜色.
我想确保图像仍以适当的透明度绘制.
有什么建议?
我正在学习C++,在这里遇到了一篇关于MSDN的文章:
http://msdn.microsoft.com/en-us/magazine/dd861344.aspx
在第一个代码示例中,我的问题涉及的一行代码如下:
VERIFY(SetWindowText(L"Direct2D Sample"));
Run Code Online (Sandbox Code Playgroud)
更具体地说,L前缀.我有一点阅读,并纠正我,如果我错了:-),但这是为了允许unicode字符串,即准备一个长字符集.现在,在我阅读这篇文章的过程中,我在另一篇关于C中的Adavnced String Techniques的文章中发表了这篇文章http://www.flipcode.com/archives/Advanced_String_Techniques_in_C-Part_I_Unicode.shtml
它说有一些选项,包括标题:
#define UNICODE
Run Code Online (Sandbox Code Playgroud)
要么
#define _UNICODE
Run Code Online (Sandbox Code Playgroud)
在C中,再次指出我是错的,感谢您的反馈.此外,它显示适合这些unicode字符串的数据类型:
wchar_t
Run Code Online (Sandbox Code Playgroud)
它混合了一个宏和一种混合数据类型,宏是:
_TEXT(t)
Run Code Online (Sandbox Code Playgroud)
它只是将字符串前缀为L,混合数据类型为
TCHAR
Run Code Online (Sandbox Code Playgroud)
如果标题存在则指出它将允许unicode,否则允许ASCII.现在我的问题是,或者更多的是我想要确认的假设,微软会使用这种更灵活的TCHAR数据类型,或者承诺使用wchar_t有什么好处.
另外,当我说微软使用它时,更具体地说是ATL和WTL库中的exmaple,你们自己是否有偏好或对此有一些建议?
干杯,
安德鲁
我已经下载了WTL 8.0软件包并且找到了安装App Wizards不支持VS 2010的脚本.
有谁知道更新脚本以支持VS 2010中的安装?
谢谢!
在MainDlg函数中
\n\nLRESULT CMainDlg::OnDo(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)\n{\n\n CMyDlg* dlg = new CMyDlg;// it could be CMainDlg member var\n //dlg.pMain = this; // i want to SendMessage(pMain.m_hWnd...) in CMyDlg...but it don\'t \n // work...\n dlg->Create(m_hWnd);\n dlg->ShowWindow(SW_SHOW);\n return 0;\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n在CMyDlg中
\n\n class CMyDlg : public CDialogImpl<CMyDlg>, public CUpdateUI<CMyDlg>,\npublic CMessageFilter, public CIdleHandler, \npublic CWinDataExchange<CMyDlg>,\npublic CDialogResize<CMyDlg>\n\n\nLRESULT CMyDlg::OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)\n{\n DestroyWindow();\n\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n所以 CMyDlg* dlg 指针将会丢失...(内存泄漏)
\n\n我在 google 上搜索模型对话框。请注意 msdn.com 中的该消息
\n\nhttp://msdn.microsoft.com/en-us/library/zhk0y9cw(VS.80).aspx …
有没有人已经在 Windows 10 上使用过 WTL?我在 Windows 10 上使用 WTL segfault 创建的所有应用程序。它们适用于 Windows 8 和 Windows 7。
我什至在 Windows 10 上的 WTL 中尝试了最基本的 Hello-World 应用程序,并且在我运行它时出现了段错误。没有明确的迹象表明出了什么问题。该程序只是带有通用 Windows 段错误的段错误。
看起来 WTL 还不兼容 Windows 10?有没有人遇到过这个问题。
只是在这里问,因为其他人可能会遇到同样的问题。我尝试了两种不同的 Windows 10(预发布测试版和正式版)。我正在使用最新的 WTL 版本WTL 9.0.4140 Final
(2014-05-30)。