#include "afxwin.h"          
class CHelloApp:public CWinApp         
{
public:
virtual BOOL InitInstance();
};
CHelloApp theApp;               
class CMainFrame:public CFrameWnd
{
public:
CMainFrame()
{

Create(NULL,"窗口",WS_OVERLAPPEDWINDOW,CRect(0,0,400,300) );
}
protected:
afx_msg void OnLButtonDown(UINT nFlags,CPoint point);
afx_msg void OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags);
DECLARE_MESSAGE_MAP()
};BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)  
ON_WM_LBUTTONDOWN()
ON_WM_KEYDOWN()
END_MESSAGE_MAP()void CMainFrame::OnLButtonDown(UINT nFlags,CPoint point)
{
MessageBox("鼠标点击",0);
CFrameWnd::OnLButtonDown(nFlags,point);
}void CMainFrame::OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags)
{
switch (nChar)
{
case VK_UP:
MessageBox("方向键上!");
break;
case VK_DOWN:
MessageBox("方向键下!");
break;
case VK_LEFT:
MessageBox("方向键左!");
break;
case VK_RIGHT:
MessageBox("方向键右!");
break;
} CFrameWnd::OnKeyDown(nChar,nRepCnt,nFlags);
}BOOL CHelloApp::InitInstance()
{
m_pMainWnd=new CMainFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}编译的时候,出现2个错误
e:\program files\microsoft visual studio 8\vc\atlmfc\include\atlchecked.h(82) : error C2660: “strcpy_s”:
函数不接受 3 个参数
e:\program files\microsoft visual studio 8\vc\atlmfc\include\atlchecked.h(93) : error C2660: “strcpy_s”: 函数不接受 3 个参数我把atlchecked.h(82) (93)两行注释掉又能正常编译运行了,怎么回事啊?用的是VC++ 2005........小弟是刚学VC,请高手们帮帮忙!

解决方案 »

  1.   

      之后随便建立1个MFC程序都要出现这个“strcpy_s”: 函数不接受 3 个参数 的错误,只有把atlchecked.h相关strcpy_s的注释掉,才行...........
      

  2.   

    注释掉的行是怎么写的?strcpy_s是一个多态的模板函数,有两种写法:
    1、两个参数
    char dst[64];
    strcpy_s<64>(dst, "abcde");2、三个参数
    char dst[64];
    strcpy_s(dst, 64, "abcde");
      

  3.   

    atlchecked.h中
    82行:ATLMFC_CRT_ERRORCHECK(::strcpy_s(_S1, _S1max, _S2));
    93行:ATLMFC_CRT_ERRORCHECK(::_tcscpy_s(_Dst, _SizeInChars, _Src));把这两行注释掉就可以正常编译运行了。但我根本没有调用strcpy_s、_tcscpy_s函数啊,难道是自动调用了?我也很奇怪我程序应该没写错啊......
      

  4.   

    可能有其它代码间接使用了strcpy_s