写mfc的几个error

本文讲述了在CFileDialog中遇到的C2664错误和C4996警告的解决方案,包括修改字符集设置和启用安全编译选项。同时介绍了静态成员函数指针与普通函数指针的区别以及ReverseFind函数的用法。最后提到debug中exe文件更新问题的简单修复方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 2 从“const char [4]”转换为“LPCTSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换

解决:项目----属性----常规----字符集----使用多字节字符集

2.error C4996: ‘strcpy’: This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\string.h(110) : 参见“strcpy”的声明
1> BB_PLOT.cpp

解决:项目----属性----c/c+±—预处理器----添加_CRT_SECURE_NO_WARNINGS

3.private:
static DWORD CALLBACK ThreadProc(LPVOID param);

调用时m_hThread = CreateThread(NULL,0,ThreadProc,this,0,NULL);

静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用类成员函数指针来储存,因为普通成员函数要执行时我们必须要确定他是属于哪个类对象才能执行,而类的static函数是不属于这个类的,他是在编译器编译时期就已经确定的,普通成员函数是在有了类对象之后才能执行。

CALLBACK
#define CALLBACK __stdcall

不写时是__cdecl
区别:https://blog.youkuaiyun.com/W_Y2010/article/details/95480357

4.ReverseFind(‘\‘)函数

此函数表示从右开始寻找第一个“\”的,并返回从左开始数的索引地址。

与之相对的是Find(‘’)函数,表示从左开始寻找第一个’\',并返回从左开始数的索引地址。
5.debug里的exe不更新
项目右键重新生成就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值