RSS 2.0 Feed
文档(Documentation)
摘要:MSDN Wiki在测试半年之后,开始整合到msdn的正式版本,从Visual Studio的IDE也可以看到这些社区贡献的内容了。但是旧的MSDN Wiki网址没有做到新地址的重定向,使用FxCop的用户可能会收到页面不存在的错误信息。 一个临时的解决办法是在FxCop的设置中修改文档的路径 从http://www.gotdotnet.com/team/fxcop/docs/rules.aspx?version=1.35&url= 修改为 http://www.gotdotnet.com/team/fxcop/docs/rules/  ...[阅读全文]

posted @ | Feedback (8) | Filed Under [ 用户界面 文档(Documentation) ]

摘要:微软主管开发部门的副总裁S. "Soma" Somasegar近日宣布了MSDN WIKI的测试版本的启动,我也终于可以摆脱保密协议的限制来讨论这个项目了。MSDN WIKI是一个公开的在线合作创作的文档项目,目前看起来是处于原型测试阶段,只有英语版本,而且不支持内部链接,但是在最终版本中应该会有各种语言的版本。目前这个项目中仅包含了Visual Studio 2005和.Net Framework 2.0的文档,但是项目计划包含所有的MSDN内容。尽管还很粗糙,但是微软在和开发社区的互动中又迈了一大步。 在项目FAQ中,微软声明测试阶段的内容会被移植到最终版本中,但是目前不知道在加入更多格式化功能之后如何格式化现有的内容。目前使用者需要一个Windows Live ID进行登录,使用IE来浏览网站,而且目前不能修改文章内容,只能在文末添加类似BLOG评论的脚注。 如果觉得现在的MSDN文档需要补充,那么就去MSDN WIKI分享自己的发现吧。注意,用户贡献的内容受到Creative Commons非商业授权协议的约束。这个项目的BLOG在http://blogs.msdn.com/msdnwiki。...[阅读全文]

posted @ | Feedback (4) | Filed Under [ 随笔 文档(Documentation) ]

摘要:个人觉得这次MVP峰会最大的进步就是技术相关的Session数量大大增加,按照MVP专长来分类;而不像上次那样按主题分类。我只需要在VC产品组的日程里面选择就可以了,而不是像上回那样不得不去听移动开发。当然这回也有MVP不去参加VC的Session,跑去听IE和移动开发。内容方面也比上次活泼很多,Don Box还是那么幽默,比尔·盖茨也有搞笑的演出,不过他看起来比去年七月份在北京的时候老多了。 一些可能有人会感兴趣的技术信息 新的产品开发合作网站http://connect.microsoft.com/。在这里可以申请参与新产品的测试。软件开发者可以使用Windows错误报告机制(Windows Error Reporting,简称WER,https://winqual.microsoft.com/parentorgs.asp)来获得反馈。 有人正在开发把VC项目转化成MSBuild的XML格式的工具 (http://blogs.msdn.com/clichten/archive/2005/06/07/Building_VC_projects_with_msbuild_and_not_using_vcbuild.aspx)。关于MSBuild的概述可以看看Christophe Nasarre的文章Overview of MSBuild (http://msdn.microsoft.com/library/en-us/dnlong/html/msbuildpart1.asp)和MSBuild Team Blog (http://blogs.msdn.com/msbuild)。还不知道这个工具是否支持VS.Net中其他语言的项目。新的代号为Phoenix的统一编译器平台也在计划中。可以加入插件来实现自定义语言的编译器 (http://blogs.msdn.com/kangsu/archive/2005/08/11/450481.aspx)。 在MFC8.0中使用Windows Forms会更加简单,加速键和Tab键的处理现在可以扔给MFC来做了 (http://blogs.msdn.com/yvesdolc/archive/2005/04/26/WindowsForms_In_MFC.aspx)。VC8.0中也会有一些新的向导,例如单元测试工程向导 (http://msdn.microsoft.com/library/en-us/dnvs05/html/vs05security.asp)。 一些建议 停止开发新的面向Win9x的程序和静态链接MFC的程序。使用新的MFC版本编译旧的程序来增加应用程序的安全性。 在新的程序中使用Unicode编码,同时尽可能将现有程序移植到Unicode。 移植到Visual C++ 2005来使用强大的编译器和调试器。 尽管限于保密协议我不能说得更多,但是微软在11月7号就会正式发布Visual Studio 2005、SQL Server 2005和BizTalk Server 2006了。新的Visual Studio版本(代号Orca和Hawaii)也正在规划中。...[阅读全文]

posted @ | Feedback (8) | Filed Under [ 用户界面 .Net Framework 集成开发环境(IDE) 类库(Library) 平台SDK(Platform SDK) 文档(Documentation) 语言(Language) ]

摘要:微软的桌面搜索API推出也有一段时间了,但是网上可以找到的相关技术资料还不多。官方的资料在http://addins.msn.com/devguide.aspx可以看到,而且网页上有SDK和一个C#的示例供下载。使用搜索API非常的简单,首先创建一个桌面搜索对象BOOL CWDSSampleView::PreCreateWindow(CREATESTRUCT& cs){ // TODO: Modify the Window class or styles here by modifying //  the CREATESTRUCT cs if(m_pSearchDesktop.CreateInstance(CLSID_SearchDesktop)) {  AfxMessageBox(IDS_FAILED_TO_CREATE_SEARCH_ENGINE);  return FALSE; } ……之后就可以开始执行搜索了。桌面搜索对象有两个方法,ExecuteSQLQuery和ExecuteQuery,都返回一个ADO记录集对象。ExecuteQuery是对用户比较友好的版本,参数虽然比较多,但是不需要自己构建SQL;而ExecuteSQLQuery是底层版本,只有一个参数——需要自己构造的SQL。相信我,你不会渴望自己来创建SQL的。传递给ExecuteQuery的参数就已经够长的了。字符串表中IDS_COLUMNS_GENERAL的内容是:DocTitle,DocFormat,Url,DocAuthor,PrimaryDate,FileName, FileExt,IsAttachment,Characterization,Rank,PerceivedType, HasAttach,DocTitlePrefix,FileExtDesc,DisplayFolder, DocKeywords,DocComments,ConversationID,Size, Create,Write。 void CWDSSampleView::Search(LPCTSTR lpszQuery,LPCTSTR lpszSort){ CString strQuery(lpszQuery);if(strQuery.IsEmpty())return; CString strSort(lpszSort); USES_CONVERSION; HRESULT hr=S_OK; GetListCtrl().SetItemCount(0); ClearCache(); try{  CString strColumns;  VERIFY(strColumns.LoadString(IDS_COLUMNS_GENERAL));  if(strSort.IsEmpty())   m_pRecordset=m_pSearchDesktop->ExecuteQuery(T2OLE(strQuery),    T2OLE(strColumns),NULL,NULL);  else   m_pRecordset=m_pSearchDesktop->ExecuteQuery(T2OLE(strQuery),    T2OLE(strColumns),T2OLE(strSort),NULL);  int nItemCount=m_pRecordset->GetRecordCount();  GetListCtrl().SetItemCount(nItemCount);   } catch(_com_error&e) {  …… }} 但是,访问返回的记录集的速度比访问数据库要慢。我不得不用虚列表和缓存来提高性能。在搜索结果很多(例如关键字选择"Microsoft")时程序有假死现象——当然也不排除我选择的字段过多的原因。 最近在写一个14位CPU的模拟器,CPU指令长度是固定的——13字节,十分的不吉利^_^b,而且CPU指令集中一些特定指令会根据上下文判断是否跳过下一个指令。但是在Intel系统上没有这样的指令,而且指令长度是可变的,所以无法知道下一个指令的长度来跳过它。我现在是在内存中设置一个标志,在执行每个指令之前检查这个标志来判断前一个指令是否指明跳过当前指令——低效,但是可以正常工作。 现在我知道一些模拟器为什么慢得像乌龟爬了……...[阅读全文]

posted @ | Feedback (3) | Filed Under [ 随笔 用户界面 程序人生(Programming on the fly) 调试技巧(Debugging) 集成开发环境(IDE) 类库(Library) 平台SDK(Platform SDK) 数据访问(Data Access) 文档(Documentation) 组件开发(Component Development) ]

摘要:使用WinDbg调试VC程序 虽然在VC6.0中可以通过安装Visual C++ Toolkit(网站:http://msdn.microsoft.com/visualc/vctoolkit2003/)来编写基于最新版本的平台SDK、DirectX SDK的程序以及托管代码,但是VC6附带的调试器并不支持新版本的调试信息,所以实际上是不能用VC6来调试新版本编译器生成的程序的。一个替代的解决方案是使用新版本的Windows调试工具Windbg(网站:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx)。Windbg的调试功能基本和Visual C++中的相同,但是需要手动设定源文件和调试符号文件的搜索路径(可以参考VC6.0中的对应设置)。一些代码,例如MFC的代码比较难于定位,这时可以双击调用堆栈中的函数名称来打开文件并定位到函数所在位置。Windbg可以进行有限的托管代码调试,但是调试过程比较麻烦。在没有安装Visual Studio的计算机上调试,例如进行远程调试的时候可能还需要部署调试符号(Generating and Deploying Debug Symbols With Visual C++ 6.0)。 调试Visual Studio .Net 的程序需要用户是管理员或者"Debug User"用户组成员。如果登录用户不是该组成员,那么也可以用WinDbg来调试程序。...[阅读全文]

posted @ | Feedback (2) | Filed Under [ 随笔 .Net Framework 安全和管理(Security and Management) 调试技巧(Debugging) 工具(Tools) 集成开发环境(IDE) 类库(Library) 平台SDK(Platform SDK) 文档(Documentation) 语言(Language) C++/CLI/Managed C++ Extension ]

摘要:程序员在我看来是比较会偷懒的一个群体。为了在开发软件的时候减少人工操作,他们会使用各种各样的软件和语言特性,例如IDE和预处理宏。李建忠在他的BLOG(http://blog.joycode.com/lijianzhong/archive/2005/05/08/50440.aspx)中提到,为了简化声明属性的工作,他的同事自己写了一些小工具来生成需要的代码。在C++托管扩展中,这个工作稍微简单一些,用预处理宏就可以了。 #define   DECLARE_PROPERTY_DOUBLE_PUBLIC(propertyName)\protected:\   double _##propertyName;public:\   __property double get_##propertyName(){ return _##propertyName; }\   __property void set_##propertyName( double new_##propertyName ){ _##propertyName= new_##propertyName; } public __gc __sealed class Vector {public:   // ...   DECLARE_PROPERTY_DOUBLE(x)   DECLARE_PROPERTY_DOUBLE(y)   DECLARE_PROPERTY_DOUBLE(z) }; 当然,如果使用C++/CLI的话,这个工作更加简单: public ref class Vector sealed{ public:    property double x;     property double y;    property double z;}; 我在编程的时候也是个彻底的实用主义者,需要大量重复编写的代码都是尽量用宏实现。例如,我用如下的宏来简化CCmdTarget派生类对IOleCommandTarget类的处理: #define DECLARE_IOLECOMMANDTARGET\    STDMETHOD(QueryStatus)(const GUID* pguidCmdGroup, ULONG cCmds, OLECMD prgCmds [],OLECMDTEXT* pcmdtext);\    STDMETHOD(Exec)(const GUID*,DWORD nCmdID, DWORD nCmdExecOpt,VARIANTARG* pvarargIn, VARIANTARG* pvarargOut); #define IMPLEMENT_IOLECOMMANDTARGET(theClass,localclass)\STDMETHODIMP theClass::X##localclass::Exec(const GUID* pguidCmdGroup,DWORD nCmdID, DWORD nCmdExecOpt,VARIANTARG* pvarargIn, VARIANTARG* pvarargOut)\{\ METHOD_PROLOGUE_EX(theClass, localclass)\ ASSERT_VALID(pThis);\ return pThis->Exec(pguidCmdGroup,nCmdID,nCmdExecOpt,pvarargIn,pvarargOut);\}\STDMETHODIMP theClass::X##localclass::QueryStatus(const GUID* pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[],OLECMDTEXT* pcmdtext)\{\ METHOD_PROLOGUE_EX(theClass, localclass)\ ASSERT_VALID(pThis);\ return pThis->QueryStatus(pguidCmdGroup,cCmds,prgCmds,pcmdtext);\} #define IMPLEMENT_LOCALCLASS_UNKNOWN(theClass,localclass) \STDMETHODIMP_(ULONG) \theClass::X##localclass::AddRef() \{ \ METHOD_PROLOGUE_EX(theClass, localclass) \ ASSERT_VALID(pThis); \ return pThis->ExternalAddRef(); \} \\STDMETHODIMP_(ULONG) \theClass::X##localclass::Release() \{ \ METHOD_PROLOGUE_EX(theClass, localclass) \ ASSERT_VALID(pThis); \ return pThis->ExternalRelease(); \} \STDMETHODIMP theClass::X##localclass::QueryInterface( \REFIID iid, LPVOID* ppvObj) \{ \ METHOD_PROLOGUE_EX(theClass, localclass) \ ASSERT_VALID(pThis); \ return pThis->ExternalQueryInterface(&iid, ppvObj); \}  这样要在CCmdTarget派生类中实现IOleCommandTarget接口的话,只需要编写实现函数就行了: //声明class CScreenCaptureGDI : public CScreenCaptureBase{   DECLARE_OLECOMMANDTARGET……   DECLARE_INTERFACE_MAP()   BEGIN_INTERFACE_PART(OleCommandTarget, IOleCommandTarget)    DECLARE_OLECOMMANDTARGET   ......[阅读全文]

posted @ | Feedback (7) | Filed Under [ 随笔 编译(CodeGen) 文档(Documentation) 语言(Language) C++/CLI/Managed C++ Extension ]

摘要:经常看见有些人问Visual C++ 2005里面为什么没有了MFC。实际上,MFC只是在目前免费下载测试版的Express版本里面没有,在其它的版本里面都有——但是一般都是要付钱的。具体的各个版本的比较可以参见参考部分的链接。不过对于用VC来学习.Net开发的程序员来说,Express版就足够了。 小道消息: CFileDialog::SetControlText的BUG在Beta2里面已经修正。 Visual C++ 2005不再支持单线程的CRT库(LIBC.lib) 参考 http://msdn2.microsoft.com/library/hs24szh9(en-us,vs.80).aspx http://msdn2.microsoft.com/library/y8bt6w34(en-us,vs.80).aspx...[阅读全文]

posted @ | Feedback (6) | Filed Under [ 集成开发环境(IDE) 类库(Library) 文档(Documentation) 语言(Language) C++/CLI/Managed C++ Extension ]

摘要:我的一些书签打开之后就成了这样子 很抱歉, microsoft.com 没有合乎您要求的网页。 您输入的地址可能不正确,或者该网页并不存在. 这不是问题,问题是在站里面找不到文章的新位置了,没有办法更新书签。 好在百度还有快照 http://cache.baidu.com/c?word=%B2%F0%3B%C8%A1%2Cweb%2C%D2%B3&url=http%3A//207%2E46%2E245%2E92/china/msdn/workshop/scrape%2Easp&b=12&user=baidu...[阅读全文]

posted @ | Feedback (8) | Filed Under [ 随笔 文档(Documentation) ]