MFC数据类型兼容问题

海阔任鱼跃 2011-11-14 06:49:07
void CMy002Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
char filter[]="所有文件(*.*)|*.*||";
CFileDialog fdlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,filter);
fdlg.m_ofn.lpstrInitialDir="c:\\";
if(fdlg.DoModal()==IDOK)
{
GetDlgItem(IDC_EDIT1)->SetWindowText(fdlg.GetPathName());
}
}
编译之后有如下错误,不知道该如何进行转换,编辑框的id为IDC_EDIT1




5 IntelliSense: 未定义标识符 "IDC_EDIT1"
3 IntelliSense: 没有与参数列表匹配的构造函数 "CFileDialog::CFileDialog" 实例
4 IntelliSense: 不能将 "const char *" 类型的值分配到 "LPCWSTR" 类型的实体 f:\c++程序设计\vc++范例开发大全\002\002\002dlg.cpp

1.error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“char [20]”转换为“LPCTSTR” f:\c++程序设计\vc++范例开发大全\002\002\002dlg.cpp
2 error C2440: “=”: 无法从“const char [4]”转换为“LPCWSTR” f:\c++程序设计\vc++范例开发大全\002\002\002dlg.cpp 162 1 002



那个大虾能告诉我该怎样进行转换啊?在vc++6.0可以,但是在vc++2010就不行了

...全文
396 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyps 2011-11-15
  • 打赏
  • 举报
回复
所以字符串前加: _T("字符串")

如果你确定有IDC_EDIT1这个控件的话,#include "resource.h"

chunyou128 2011-11-15
  • 打赏
  • 举报
回复
把代码注释掉
一句一句放出来调试
friendan 2011-11-15
  • 打赏
  • 举报
回复
//我来说说第一个错误吧!
1.error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“char [20]”转换为“LPCTSTR” f:\c++程序设计\vc++范例开发大全\002\002\002dlg.cpp

//从错误提示来看,明显是楼主人第5个参数传错了,呵呵,出错信息中已经给出函数原型了:

CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)

在vc++2010下工程环境的字符集默认是unicode

建议将这行:char filter[]="所有文件(*.*)|*.*||";
改为: TCHAR filter[]="所有文件(*.*)|*.*||";

//其它的建议也用通用宏吧!...
一条晚起的虫 2011-11-15
  • 打赏
  • 举报
回复
//char filter[]="所有文件(*.*)|*.*||";
TCHAR filter[]=_T("所有文件(*.*)|*.*||");
// unicode工程,很多函数参数都要用 wchar*, 而不是 char*
// 为了兼容,可以用MBCS和unicode都可以用的TCHAR.h的中的宏
峰白 2011-11-15
  • 打赏
  • 举报
回复
1、你用vc2010的工程环境的字符集是unicode么?如果是的话应注意两者的区别
CString str = _T("");应当这样使用
2、你Domodal()后窗口已经销毁,真怀疑用GetDlgItem还能不能获取edit的内容,保险点还是edit关联CString变量吧
3、如果是unicode环境的话,少用char,而是TCHAR
jiuzhoulh 2011-11-15
  • 打赏
  • 举报
回复
在界面没有添加IDC_EDIT1这个CEdit控件
ccnufeng 2011-11-15
  • 打赏
  • 举报
回复
char filter[]="所有文件(*.*)|*.*||";
改成
CString filter = "所有文件(*.*)|*.*||";


未定义标识符 "IDC_EDIT1"
看看你的资源文件里时候有该控件
friendan 2011-11-15
  • 打赏
  • 举报
回复
一觉本来,发现我之前的代码还不够标准,呵呵,补充一下吧:

建议将这行:char filter[]="所有文件(*.*)|*.*||";
改为: TCHAR filter[]=_T("所有文件(*.*)|*.*||");
因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的组件模型——COM 1.2 COM的发展历程 1.2.1 COM以前的对象技术:DDE、OLE 1、VBX控件 1.2.2 COM首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和COM+ 1.2.5 远程对象:ORBs和DCOM 1.2.6 COM的最新版本:COM+ 1.3 COM技术现状 1.3.1 COM与CORBA 1.3.2 COM与Enterprise Java Beans 1.3.3 Windows之外的COM 小结 第2章 从C++到COM 2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成COM对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6 为COM对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章 COM基础知识 3.1 对象与接口 3.1.1 COM对象 3.1.2 COM接口 3.1.3 IUnknown接口 3.1.3.1 生存期控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5 COM接口定义 3.1.6 接口描述语言IDL 3.2 COM应用模型 3.2.1 客户/服务器模型 3.2.2 进程内组件 3.2.3 进程外组件 3.2.4 COM库 3.2.5 HRESULT返回值 3.2.6 COM与注册表 3.3 COM组件 3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4 COM客户 3.4.1 COM对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何调用进程内组件 3.4.3 COM客户调用进程外组件 3.5 进一步认识COM 3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象和IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元

16,547

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧