+ -
当前位置:首页 → 问答吧 → MFC中的一个小问题

MFC中的一个小问题

时间:2011-12-13

来源:互联网

本人接触MFC时间太短,不大懂!我在BOOL CMyDlg::OnInitDialog()中加入如下代码:

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);
CFont*pFont=pEdit->GetFont();
LOGFONT lf;
memset(&lf,0,sizeof(LOGFONT));
lf.lfHeight=120;
strcpy_s(lf.lfFaceName,LF_FACESIZE,"Arial");
pFont->CreateFontIndirect(&lf);
pEdit->SetFont(pFont,TRUE);

错误提示是strcpy_s没有被定义,各种该木有成功,似乎很简单的。。就解答

作者: a1065cn   发布时间: 2011-12-13

如果你用的是VC++6,就改成strcpy的调用

作者: masm32v9   发布时间: 2011-12-13

strcpy_s是C++库函数,定义在<string>都文件中,命名空间std
MFC的话,你可以直接这样写:lf.lfFaceName = "Arial";

作者: riyueming184   发布时间: 2011-12-13

引用 2 楼 riyueming184 的回复:

strcpy_s是C++库函数,定义在<string>都文件中,命名空间std
MFC的话,你可以直接这样写:lf.lfFaceName = "Arial";
我试了一下,提示错误,can not covert from char[6] to char[32],求详细解释

作者: a1065cn   发布时间: 2011-12-13

抱歉,前两天没空。
如果你还没找到方法解决,可以采用下面的方法:
_tcscpy_s(lf.lfFaceName,LF_FACESIZE,_T("Arial"));
之前我没注意到lf.lfFaceName是个数组,数组是不能直接赋值的,所以编译不通过。
如果提示没有定义,那你最好把包含_tcscpy_s的头文件加入,一般情况下是不需要的,只要你是通过MFC向导生成的应用程序,应该都已经包含了

作者: riyueming184   发布时间: 2011-12-16