VC6.0与VS2005的一些差别

来源:互联网 发布:淘宝办理幽灵户口 编辑:程序博客网 时间:2024/04/29 20:19

分类:
一、         VC 6.0 中的 MFC ClassWizard 从 Visual Studio 2005 开始已被分拆成两个功能:

1.     对控件和菜单建立事件映射的功能

菜单视图 (View)->Solution Explorer 或 Ctrl+W,S 中 Resource Files 树下,在资源视图(通过双击资源文件 *.rc 可进入该视图)选中某一个菜单或者控件,右键其中的某项,在弹出的菜单中选择“添加事件处理程序” (Add Event Handler...) ,接下来就能找到 VS 6 中类似 Message Maps 的选项;

2.     添加窗体的消息映射

菜单视图 (View)-> 类视图 (Class View) 或 Ctrl+W,C 进入类视图单击类,右键此类选中“属性” (Properties) ,进入属性界面,其上有事件 (Events) 、消息 (Messages) 、重写 (Overrides) 等。对比 VS 6 没有了 Automation( 以前称作 OLE 自动化, COM IDispatch 接口 ) 选项。

从 Visual Studio 2005 开始有了 MFC Class Wizard ,不过是在类视图中选中项目,右键 Add->Class ,选中 MFC->MFC Class ,点击 Add 后才出现的。

 

二、         自 Visual Studio 2005 环境起,字符串如 "Microsoft" 无法自动转换为 LPCTSTR 类型,解决方法见微软 FAQ: Cannot convert from 'const char [..]' to 'LPCTSTR' 。

 

三、         *View.h 消息映射中

//{{AFX_MSG(*)

...

//}}AFX_MSG

这两个 AFX_MSG 注释宏不再存在,其中 * 代表建立的项目名。

同样在 *View.cpp 消息映射中注释宏 AFX_MSG_MAP 也不再存在了。

 

四、         连接 *.lib 。在 VC6.0 中是在 Project->Setting 中设置,而自 Visual Studio 2005 起,菜单 Project->Properties ,设置 lib 路径(只存在 VS2005 中) :Configuration Properties->General->Addition Library Directories ,添加 lib:Configuration Properties->Linker->Input->Addition Dependences 。

 

五、         Visual C++ Components 目录 自 VC 7.0 就已被移除,原先在 VC++ 6.0 中的操作为:菜单 Project->Add To Project->Components and Controls->Visual C++ Components->Popup Menu 。 .Net 环境项目可以通过工具 (Tools) -> 选择工具箱项 (Choose Toolbox Items) 进行 ; MFC 中添加 Popup Menu 可以通过向 View 类中添加消息 WM_CONTEXTMENU 进行。 Splash Screen 组件也因此不存在 ,但 可以参照 Microsoft Visual Studio 9.0/Samples/1033/AllVCLanghageSamples.zip 中拷贝出 splash.cpp 和 splash.h 这两个文件 , 加入到现有项目中或者 对话框增强版 。

 


六、          自 Visual Studio 2003 起,控件通知消息 WM_INITDIALOG 移到了重写 (Overrides) 里面,重写里的方法 OnInitDialog() 对应 WM_INITDIALOG 消息。

 

七、          自 VS2005 起对消息的检查更为严格, VC6 中没问题的

ON_MESSAGE(message,OnMyMessage);
 

返回值必须规范为 LRESULT

afx_msg LRESULT OnMyMessage(WPARAM, LPARAM) ;
 

返回值可以为 TRUE 或者 FALSE 。 


 

八、          从 Components 里添加 ActiveX (基于 COM )不再可行,自 VS2005 以来中需要 Add Class->MFC Class From ActiveX Control ,点 Add ,窗口 Add Class From ActiveX Control Wizard 显现。 

 

九、          ActiveX Control Test Container 即 tstcon32.exe ,默认保存在 %programfiles%/Microsoft Visual Studio 9.0/Common7/Tools/ 目录中,但从 VS2008 起已被移除, VS2005 是最后一个包含它的版本,如想获取它可以自行编译 TSTCON sample 或者单独获取其早期版本。

 

【资源】

Activex 、 OLE 、 COM 、 OCX 、 DLL 之间有什么区别?

 

【附录】

A : LPCTSTR

LPCTSTR = Long Pointer to a Const TCHAR STRing

LP 表示长指针,这是为了兼容 Windows 3.1 等 16 位操作系统遗留下来的,在 win32 中以及其它 32 位操作系统中, long 指针和 near 指针及 far 修饰符都是为了兼容的作用,没有实际意义。

P 表示是指针。

C 表示是常量即 const 。

T 在 Win32 环境中是一个 _T 宏,这个宏用来表示你的字符是否使用 UNICODE 。如果你的程序定义了 UNICODE 或者其它相关的宏,那么这个字符或者字符串将被作为 UNICODE 字符串, 否则就是标准的 ANSI 字符串。

STR 表示这个变量是字符串。

所以 LPCTSTR 就表示一个指向长地址的可以根据一些宏定义改变语义的固定字符串。

完整定义见 WinNT.h :


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jc_xiang/archive/2009/12/04/4942349.aspx