SOにはすでに同様のタイトルの質問があることは知っていますが、この特定のケースに対する私の選択肢を知りたいと思います。
MSVCコンパイラはstrcpyに関する警告を出します:
1>c:\something\mycontrol.cpp(65): warning 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.
これが私のコードです:
void MyControl::SetFontFace(const char *faceName)
{
LOGFONT lf;
CFont *currentFont = GetFont();
currentFont->GetLogFont(&lf);
strcpy(lf.lfFaceName, faceName); <--- offending line
font_.DeleteObject();
// Create the font.
font_.CreateFontIndirect(&lf);
// Use the font to paint a control.
SetFont(&font_);
}
注font_
はインスタンス変数です。はとして定義されてLOGFONT
いるウィンドウ構造です。lfFaceName
TCHAR lfFaceName[LF_FACESIZE]
私が疑問に思っているのは、次のようなことをすることができるかどうかです(そうでない場合はなぜですか):
void MyControl::SetFontFace(const std::string& faceName)
...
lf.lfFaceName = faceName.c_str();
...
または、まったく別の選択肢がある場合は、私に知らせてください。