我的代码就是这样写的:
void CScanConfig::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CScanConfig)
DDX_Text(pDX, IDC_SCANCONFIGNAME, m_ScanConfigName);
DDV_MaxChars(pDX, m_ScanConfigName, 128);--》执行没问题 //}}AFX_DATA_MAP
}/////////////////////////////////////////////////////////////////////////////--》这个是mfc里面的定义
// Max Chars Dialog Data Validationvoid AFXAPI DDV_MaxChars(CDataExchange* pDX, CString const& value, int nChars)
{
ASSERT(nChars >= 1);        // allow them something
if (pDX->m_bSaveAndValidate && value.GetLength() > nChars)
{
TCHAR szT[32];
wsprintf(szT, _T("%d"), nChars);
CString prompt;
AfxFormatString1(prompt, AFX_IDP_PARSE_STRING_SIZE, szT);--》这里AFX_IDP_PARSE_STRING_SIZE抓取不出来,不知道为什么呢?我不大明白MFC的这个多国语言要如何实现~~ 英文默认的也没有抓取出来,是空白 请大家帮忙~~ 不懂~~-_-#,谢谢
AfxMessageBox(prompt, MB_ICONEXCLAMATION, AFX_IDP_PARSE_STRING_SIZE);
prompt.Empty(); // exception prep
pDX->Fail();
}
else if (pDX->m_hWndLastControl != NULL && pDX->m_bEditLastControl)
{
// limit the control max-chars automatically
::SendMessage(pDX->m_hWndLastControl, EM_LIMITTEXT, nChars, 0);
}
}

解决方案 »

  1.   

    居然没人回答,不过的确很间的,我当初就是脑袋进水了,想了半天没弄明白~~555555555我贴出来,我在我的RC里面把对应language的AFXRES.RC include进来就可以了
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENW)
    #ifdef _WIN32
    LANGUAGE LANG_ENGLISH, 0xC
    #pragma code_page(1252)
    #endif //_WIN32
    #include   "afxres.rc" //我就加了这句希望大家顶下,偶把分送掉希望大家不要像我,基本工不扎实,我是时候要多复习下-_-#
      

  2.   

    接分!我是用INI文件做的多语言,改动很方便!
      

  3.   

    ini,那不是文件也很大,多国就需要多个ini,还是全部放在同一个ini?
      

  4.   

    文件不大,放在多个文件里面阿,启动的时候遍历一下文件夹把所有的语言名称加入到菜单中让用户自己选择语言。
    我做了一个库,目前可以自动替换 combox clistctrl ctab lable .... 等比较常用的控件中的文本。
      

  5.   

    顶好,我也出现同样的困惑
    DDV_MaxChars(pDX, m_ScanConfigName, 128);
    这个DDV_MaxChars折腾了我半天就是闹不明白
    字面意思也看不懂,可苦了我了,新手,新手