【问题标题】:Unable to set the Title of the Dialog using SetDlgItemTextW() in MFC Dialog Based application无法在基于 MFC 对话框的应用程序中使用 SetDlgItemTextW() 设置对话框的标题
【发布时间】:2016-03-23 12:14:46
【问题描述】:

我的要求是:

我正在使用基于 MFC 对话框的应用程序,在这里我想用日语字符串设置对话框的标题。

下面是我的代码sn-p:

CStringW str;   // Using CStringW to support unicode characters

CTestofUTF83Dlg dlg;   // CTestofUTF83Dlg is my dialog class that is derived    
                      //from CDialog

str.LoadString(IDC_TESTJAPAN); // IDC_TESTJAPAN contains my Japanese string

SetDlgItemTextW(dlg,IDD_TESTOFUTF83_DIALOG,str); // IDD_TESTOFUTF83_DIALOG is the ID of my Dialog

使用上面的代码,对话框标题不反映日文字符串。

我认为是由于SetDlgItemTextW的第一个参数,即对话框的句柄(dlg)。

因为,如果我使用SetDlgItemText() 函数,我可以设置标题。

请帮帮我。

【问题讨论】:

  • 您是否调试过您的 LoadString 确实将所需的字符串放入 str 中?
  • @weisman.. 是的,LoadString 正在将所需的字符串放在 str 中。
  • 函数返回值是否表示成功?
  • @o_weisman.. 是的,它表示成功,问题仅出在这一行 SetDlgItemTextW(dlg,IDD_TESTOFUTF83_DIALOG,str);因为如果我使用消息框来测试 MessageBoxW(dlg,str,0,0);它工作正常并显示字符串。

标签: mfc


【解决方案1】:

是的,那行不通。您尚未创建窗口/对话框,因此它没有窗口句柄(m_hWnd != 0 或垃圾)。

在 CTestofUTF83Dlg 的 OnInitDialog() 成员中调用 SetWindowText。

BOOL CTestofUTF83Dlg::OnInitDialog()
{
   CDialog::OnInitDialog();
   // SetWindowText .... blah blah
   return TRUE;
}

【讨论】:

  • 我已经包含在 OnInitDialog 中,但仍然无法正常工作。
  • 根据您的用户名,听起来不是日语...这对我来说不是问题,但是...您是否在 Windows 上安装了日语语言环境?其次,您是否将您的应用程序构建为 Unicode?如果必须混合字体,请确保将其构建为 Unicode!!!!如果您将其构建为 MBCS,并且您的默认代码页不是日语,那么您将遇到问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
相关资源
最近更新 更多