
Windows C/C++/C#/MFC编程
Windows C/C++/C#/MFC编程,学习、编程之路的探讨和总结。
Wentasy
Blockchain specialist.
展开
-
关于VS2010的错误:mt.exe : general error c101008a
在用vs2010时,默认编码为unicode,如果在项目中途改变,则编译时会碰到错误general error c101008a: Failed to save the updated manifest to the file "./Debug/Menu.exe.embed.manifest". Bpcn mt.exe .这时清理解决方案,再重新生成项目便可解决.原创 2011-10-29 17:41:15 · 8078 阅读 · 6 评论 -
COleDateTime类获取系统当前时间的成员函数
环境:VS2010问题:COleDateTime类获取系统当前时间的成员函数 COleDateTime currentTime; currentTime= COleDateTime::GetCurrentTime(); CString timeStr = currentTime.Format("%Y-%m-%d %H:%M:%S"); 注:原创 2011-11-04 16:46:46 · 3278 阅读 · 0 评论 -
auto”不能与任何其他类型说明符组合小
环境:VS2010代码:#include using namespace std;static int x = 10;void fun1() { x += 2; cout << x << ", ";}void fun2() { //auto int x = 11;//error C3530: “auto”不能与任何其他类型说明符组合 au原创 2011-11-04 16:57:22 · 3119 阅读 · 0 评论 -
C++设计类选择继承或组合
在C++程序设计设计类时,用到其他类的属性或者方法要明白是用组合还是继承。组合即是has a,该类拥有哪些属性或者方法;继承即是is a,该类拥有父类的属性或者方法。 这里举一个例子,假如有一个父类汽车,当有轿车、卡车、面包车等类似的实体时,此时应该选择继承,即派生类拥有父类汽车的属性或者方法;当有发动机、车门、车窗等和汽车相关的属性时,就应选择组合。 总之,选择组合还是继承,就原创 2011-11-18 14:36:55 · 1905 阅读 · 0 评论 -
C++赋值号能否被继承
在C++中,普通函数能够被继承,但是析构函数和构造函数不能被继承。这里有个问题,C++赋值号能否被继承? 看以下代码: #include using namespace std;class A{public: A() { a = 0; cout<<"A::A()"<<endl; } A & operator =(A &aa) {原创 2011-11-18 19:40:40 · 1939 阅读 · 6 评论 -
C++私有继承访问
环境:VS2010问题:探讨C++私有继承在外部的访问代码:#include using namespace std;class A{public: A() { a = 0; cout<<"A::A()"<<endl; } int a;};class B:protected A{public: B() { i=1; cout<<"原创 2011-11-18 19:56:53 · 1653 阅读 · 0 评论 -
C++虚函数探讨(一)
环境:2010代码: #include using namespace std;class A{public: A() { a = 0; cout<<"A::A()"<<endl; } int a;};class B:protected A{public: B() { i=1; cout<<"B::B()"<<endl; }原创 2011-11-18 20:15:01 · 1612 阅读 · 2 评论 -
C++虚函数探讨(二)
环境:VS2010代码:#include using namespace std;class A{ public: A() { q(); cout<<"A::A()"<<endl; } virtual void q() { cout<<"A"<<endl; }};class B:public A{ public: B() { q(); cou原创 2011-11-19 09:26:00 · 1781 阅读 · 0 评论 -
C++虚函数探讨(三)
环境:VS2010代码: #include using namespace std;class A{public: virtual void func1(int i){ cout <<"A::func1()"<<endl; } virtual int func2(float f){ cout <<"A::func2()"<<endl; retu原创 2011-11-28 16:41:00 · 1750 阅读 · 2 评论 -
C++中派生类之间的赋值对基类的影响
环境:VS2010代码:#include using namespace std;class A{public: A() { a = 0; cout<<"A::A()"<<endl; } int a;};class B:public A{public: B() {原创 2011-11-28 17:12:19 · 2555 阅读 · 0 评论 -
C++虚函数探讨(四)
环境:VS2010代码://public:#include using namespace std;class A{public: virtual ~A() {} virtual void func() { printf("A::func()\n"); };};class B: public A{private: virtual void func(){原创 2011-11-28 17:19:34 · 1505 阅读 · 0 评论 -
C++文件操作中文本文件和二进制文件比较
* 以text形式存储,优点是具有较高的兼容性。缺点是存储一批纯数值信息时,要在数据之间人为地添加分割符;输入输出过程中,系统要对内外存的数据格式进行相应转换;另外text文件不便于对数据实行随机访问。 * 以binary形式存储 优点是便于对数据实行随机访问(每一同类型数据所占磁盘空间的大小均相同,不必在数据之间人为地添加分割符);输入输出过程中,系统不对数据进行任何转换。缺点是兼容性原创 2011-12-18 16:01:08 · 2737 阅读 · 0 评论 -
Visual Studio error C4335: 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式解决
环境:VS2010问题: error C4335: 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式问题分析:多数因为复制代码产生。解决:1.利用Editplus:复制文件------>打开Editplus------->菜单栏--------->文档-------->文件类型-------->更改文件类型------->改为对应的平台。2.利用Ul原创 2011-12-24 15:54:38 · 7574 阅读 · 0 评论 -
Visual C++6.0显示行号
在Visual C++6.0环境下进行开发,相信大家都会遇到这个问题:想看下自己的代码所在位置,却找不到地方设置。现在解决方式如下:1.下载显示行号插件:下载地址:http://download.youkuaiyun.com/detail/wentasy/39944512.使用方法:下载插件后,保存到任何目录-------->运行VC6--------->点击菜单-------->“Tools原创 2012-01-03 10:50:19 · 4236 阅读 · 12 评论 -
fatal error C1083: Cannot open precompiled header file: 'Debug/dian.pch': No such file or directoy解决
环境:Visual C++ 6.0问题:fatal error C1083: Cannot open precompiled headerfile: 'Debug/dian.pch': No such file or directoy 解决:Visual C++6.0------>菜单------->工程(project)------->设置(settings)-------->原创 2012-01-02 15:26:54 · 2159 阅读 · 0 评论 -
Visual Studio 2010显示行号设置
环境:Visual Studio 2010问题:设置行号解决:菜单-------->工具-------->选项-------->文本编辑器-------->C/C++-------->常规-------->显示-------->把复选框中的行号勾中即可。原创 2012-01-03 10:54:03 · 16088 阅读 · 3 评论 -
Visual C++ 6.0设置动态/静态链接MFC DLL
环境:Visual C++ 6.0问题:动态/静态链接MFC DLL设置解决:菜单------->工程(project)------>Settings------>General菜单或选项------>在Microsoft Foundation Classes 中进行设置。如图:原创 2012-01-03 15:42:57 · 2318 阅读 · 0 评论 -
VC中GetTextMetrics和GetTextExtent用法区别
环境:Visual C++ 6.0问题:GetTextMetrics和GetTextExtent用法区别解决:先来看看MSDN里对它们的解释:GetTextMetrics:CDC::GetTextMetrics BOOLGetTextMetrics( LPTEXTMETRIC lpMetrics) const;Return ValueNonzeroif the fu原创 2012-01-07 10:34:36 · 4082 阅读 · 0 评论 -
VC模拟卡啦OK字幕变色
环境:Microsoft Visual C++ 6.0问题:模拟卡啦OK字幕变色解决:主要利用Timer计时器处理。新建MFC AppWizard(exe)工程-------->在Resource页添加String table资源------->在CXXView中添加OnTimer消息处理------->在OnCreate里设置Timer计时器------->在OnTimer事件中添加原创 2012-01-07 14:08:23 · 2567 阅读 · 2 评论 -
VC注释宏含义
注释宏 注释宏就是在两行特殊注释中定义的宏。如下: //{{AFX_MSG(CDrawView) afx_msg void OnLButtonDown(UINT nFlags, CPoint point); //}}AFX_MSG 在VC++6.0中用ClassWizard自动生成的,定义的宏就生成在像上面的两行注释中,这是让ClassWizard能够分辨出原创 2012-01-07 14:31:56 · 2192 阅读 · 0 评论 -
VC ClassView标签页里不显示类信息或者显示不全解决
环境:VC问题: ClassView标签页里不显示类信息或者显示不全解决:打开工程所在项目----->找到一个以.ncb结尾的文件,将其删除----->再次打开工程----->看到完整的类信息了----->解决。 注:NCB是 “No Compile Browser”的缩写,其中存放了供ClassView、WizardBar和Component Gallery使用的信息,由V原创 2012-01-07 15:07:28 · 3707 阅读 · 0 评论 -
查询特殊字符的ASCII码及MSDN精简版下载地址
环境:Visual C++ 6.0问题:查询特殊字符的ASCII码解决:MSDN 比如你想知道换行符或者退格符的ASCII码,可以通过查阅MSDN。(换行符0x0d 退格符0x08) 注:MSDN是很强大的帮助文档,学习VC 或者以后进行开发时要经常使用。 附chm格式的帮助文档下载地址:http://ishare.iask.sina.com.cn原创 2012-01-08 11:16:54 · 2498 阅读 · 0 评论 -
模拟电话簿提取名字显示
环境:Visual C++ 6.0问题:模拟电话簿提取名字显示解决:假设在屏幕上输入名字+空格+电话号码。提供动态添加弹出菜单,再在弹出菜单上添加菜单项,通过输入的名字和电话号码存储到CStringArray里,菜单项由名字建立,当点击菜单项时再在屏幕上显示姓名和电话号码。源码: void CPhoneBookView::OnChar(UINT nChar, UINT原创 2012-01-08 19:13:03 · 2038 阅读 · 2 评论 -
VC编程时不显示提示信息(类的成员和参数列表)解决
环境:Visual C++ 6.0问题:VC编程时不显示提示信息(类的成员和参数列表) 想必大家使用VC6.0时或多或少地都会遇到这个问题,现提供三种解决方法。解决: 1.菜单------->工具(Tools)------->选项(Options)------->编辑器(Editor)------->语句完成选项(Statement compl原创 2012-01-09 15:51:59 · 3968 阅读 · 0 评论 -
单击Visual C++ 6.0 的打开按钮,出现“Microsoft (R) Developer Studio 已停止工作”解决
环境:Visual C++ 6.0 问题:单击Visual C++ 6.0 的打开按钮,出现“Microsoft (R) Developer Studio 已停止工作” 分析:使用的应该是Vista 或者WIN7系统,这是VC6.0的一个兼容性问题,可以按官方方法试一下原因:VC与VISIO冲突。 解决方法:1. 下载FileTool.exe,并解压下载地址http://s原创 2012-02-01 18:14:00 · 5011 阅读 · 0 评论 -
#include <tchar.h> 是什么意思
因为VS里的很多字符编码都是采用unicode来编码的,为了兼容字符集。微软开发了tchar包,tchar 在unicode下是wchar(双字符),而普通是char。 因为C++支持两种字符串,即常规的ANSI编码和Unicode编码,这样对应的就有了两套字符串字符串处理函数,比如:strlen和wcslen,分别用于处理两种字符串 。微软将这两套字符集及其操作进行了统一,通过条件编译(通过_U原创 2012-02-25 11:21:50 · 18458 阅读 · 0 评论 -
C++ Psapi.h头文件
Psapi是: Pocess Status API ,是获取系统状态的函数集合.它会返回以下系统信息:进程信息模块信息设备驱动程序信息进程内存使用信息工作集信息内存映射文件信息包括的函数.The following are the PSAPI functions. EmptyWorkingSet 整理内存 EnumDeviceDrivers EnumDeviceDrive原创 2012-02-26 15:04:06 · 7997 阅读 · 2 评论 -
字符串前加 _T含义
#ifdef _UNICODE #define _T(x) L##x // 就是把_T( "XXX ")变成L "XXX ",把字符串编译为Unicode格式 #else #define _T // 什么也不做 #endif 简而言之,就是把字符串转换成Unicode编码格式。 注:如果使用了_T,则应该包含tchar.h(#include )原创 2012-03-03 15:25:05 · 2402 阅读 · 0 评论 -
error C2440: 'type cast' : cannot convert from 'int *' to 'void (__thiscall CCmdTarget::*)(void)'解决
环境:Microsoft Visual C++ 6.0问题:自定义消息时,出现如下错误:error C2440: 'type cast' : cannot convert from 'int *' to 'void (__thiscall CCmdTarget::*)(void)' ,There is no context in which this conversion is possibl原创 2012-03-03 15:36:03 · 6160 阅读 · 0 评论 -
REG_OPTION_NON_VOLATILE
REG_OPTION_NON_VOLATILE:该宏是RegCreateKeyEx函数的参数可选项。LONG RegCreateKeyEx( HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRI翻译 2012-03-03 15:45:50 · 4815 阅读 · 0 评论 -
基于对话框的MFC程序加入菜单资源
环境:Microsoft Visual C++ 6.0问题:在基于对话框的MFC程序加入菜单资源解决:1.在对话框头文件中声明CMenu 变量,例如CMenu m_Menu;2.在主对话框的OnInitDialog()函数中加入如下语句: m_Menu.LoadMenu("此处加入你的菜单ID");SetMenu(&m_Menu); 3.解决。原创 2012-03-03 16:15:40 · 2643 阅读 · 0 评论 -
ClassWizard里面找不到WM_ACTIVATE消息解决
环境:Microsoft Visual C++ 6.0 问题:在使用WM_ACTIVATE消息时,在Windows消息处理找不到此消息。解决:1.类向导中选择 Class Info 选项卡,然后在 Message filter 组合框下选择 Window 就可以了。2.也可以手工映射afx_msg LRESULT OnActive(WPARAM wParam, LP原创 2012-03-11 15:12:46 · 1994 阅读 · 0 评论 -
MFC连接MySQL数据库_编辑框出现中文乱码解决
环境:Visual Studio 2010 + MySQL Server 5.1 + Navicat for Mysql 8.2问题:MFC连接MySQL数据库,编辑框出现中文乱码。 解决: 使用MySQL C API,在连接上数据库查询数据前加上如下代码: mysql_query(&m_sqlCon,"SET NAMES 'GB2312'"); //m_sqlCo原创 2012-04-01 19:41:27 · 4554 阅读 · 0 评论 -
VS2010为Picture Control 手动添加变量
环境:Visual Studio 2010问题:利用向导为Picture Control添加变量不成功,所以手动添加。 解决: 1.在头文件添加如下代码: // 对话框数据 CStatic m_Pic; 2.在对应的源文件DoDataExchange函数里添加如下代码:void CKQ_SystemDlg::DoDataExchange(CData原创 2012-04-02 10:48:31 · 9244 阅读 · 0 评论 -
MFC利用CImage类将图片显示到Picture控件上
环境:Visual Studio 2010问题:MFC利用CImage类将图片显示到Picture控件上解决:1.通过向导为Picture控件添加变量,如果不成功,则手动添加。参考(VS2010为Picture Control 手动添加变量) 2.在对应的函数里添加如下代码: CImage image; //创建图片类 image.Load(rphoto); //原创 2012-04-02 11:18:54 · 15742 阅读 · 6 评论 -
VC中Release和Debug版本的区别
区别:一、Debug版本包含调试信息,并且不作任何优化,编译器生成的代码便于程序员调试; Release版本算是发布版本,Release下不能调试,生成的文件更小,编译器生成的程序速度更快。而且Release版本进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 二、Debug下生成的Exe文件在单独运行时需要编译器提供的一些库文件的支持,原创 2012-03-19 11:32:40 · 2894 阅读 · 0 评论 -
好书推荐_Windows程序设计(第五版)
书 名: Windows程序设计(第五版 ) 作 者:佩措尔德(CharlesPetzold) 关于书籍: 《Windows程序设计(第5版)》是一本经典的Windows编程圣经,曾经伴随着近50万Windows程序员步入编程殿堂,成长为IT时代的技术精英。 作为Windows开发人员的必备参考,涵盖基础知识和中高级主题,全原创 2012-01-06 16:56:58 · 4244 阅读 · 7 评论 -
Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version 错误解决
环境:VS2010任务:编写一个显示当前系统时间、设置系统时间的类代码:#include "CTime.h"#include #include using namespace std;int main(void){ MyCTime myCtime; //调用显示系统当前时间的函数 myCtime.GetSysCurTime(); COleDateTime time原创 2011-11-04 16:43:02 · 2250 阅读 · 0 评论 -
VS2010不能将参数 1 从“std::string”转换为“const char *”解决
环境:VS2010代码:int len = strlen(str);//求字符串长度解决:std::string类有一个方法叫c_str()就是取出string对象的字符串,实现到char *的转换,调用方法:strlen(str.c_str());总结:strlen只能用于c风格字符串,不能用于string,因为strlen是在遇到\0时结束判断的。用这个strlen(a.c_s原创 2011-10-29 17:44:40 · 8096 阅读 · 0 评论 -
C++两种方式创建对象(new和申明)
环境:VS2010问题:1.如何让一个类的对象只能够在堆上创建(即使用new创建,如:T *p=new T;), 而不能在栈上创建(即直接申明方式,如:T t;);2.如何让一个类的对象只能够在栈上创建(即直接申明方式,如:T t;),而不能在堆上创建(即使用new方式,如:T *p=new T;);解决:1.只能使用new创建,而不能使用申明明方式,只需要把类T的析构函数设为原创 2011-11-13 13:09:03 · 4008 阅读 · 2 评论