我在对话框程序中调用了一个输入对话框,要求用户输入信息。但我想调用之前改变输入对话框中的静态文本的内容,如何做到?
代码如下:
void CMemory_key_testDlg::OnUnlockUsrPin() 
{
// TODO: Add your control notification handler code here
    char newUsrPin[16];
char unlockPin[16];
CChangUserPin m_hChangUserPin;
int iRet = m_hChangUserPin.DoModal();
(GetDlgItem( IDC_STATIC_oldPin ))->SetWindowText( "Test111" );//<---在此位置改变文本内容 switch( iRet )
{
case -1:
MessageBox( "对话框不能被创建起来!", "错误信息", MB_OK | MB_ICONEXCLAMATION );
return;
case IDABORT:
return;
case IDOK:
//接受cstring值,并传入函数参数中
strncpy(newUsrPin,(LPCTSTR)m_hChangUserPin.m_OldPin,sizeof(newUsrPin));
strncpy(unlockPin,(LPCTSTR)m_hChangUserPin.m_NewPin,sizeof(unlockPin));
break;
case IDCANCEL:
return;
default:
return;
} rv = NHTKEY_UnlockUsrPin(hKey,newUsrPin,unlockPin);
if( NHTKEY_SUCCESS != rv)
{
m_list.ResetContent();
m_list.AddString("NHTKEY_UnlockUsrPin error...\n");

else
{
m_list.ResetContent();
m_list.AddString("NHTKEY_UnlockUsrPin OK...\n");
(GetDlgItem( IDC_display ))->SetWindowText( "UnlockUsrPin OK!" );
}

return;
}编译没问题,运行未见改变效果,而且出错。诸位高手,帮我看看。

解决方案 »

  1.   

    我试过了,(GetDlgItem( IDC_STATIC_oldPin ))->SetWindowText( "Test111" );
    方法可以改变当前的对话框中的文本,但不能改变新创建的对话框。
    我想改变新创建的对话框如何做到?
      

  2.   

    放到新建的对话框的OnInitDialog()函数里面!
      

  3.   

    把(GetDlgItem( IDC_STATIC_oldPin ))->SetWindowText( "Test111" );
    放到CChangUserPin 的OnInitDialog()中去
      

  4.   

    CChangUserPin 中没有OnInitDialog()函数!
    而且我想动态的改变文本内容。不同函数调用此对话框时显示内容不同。
    谁知道?
      

  5.   

    方便的话把工程发过来我帮你看
    [email protected]
      

  6.   

    1、想办法在主程序对话框和新建对话框之间通信。比较好的一个办法是,在新建对话框的类中创建一个公共变量用于通信。class CChangUserPin : public CDialog
    {
    //...
    public:
      CString m_strSender;
    }然后在主程序中这样使用新建对话框:  CChangUserPin ChangUserPin;  ChangUserPin.m_strSender = "我";
      ChangUserPin.DoModal();
      //...
    2、在新建对话框创建之后以及显示之前的这段时间里,做你的事情。比如,在新建对话框中重写OnInitDialog函数,或者定义WM_SHOWWINDOW消息处理。BOOL COpenUrlDialog::OnInitDialog()
    {
      CDialog::OnInitDialog();  // TODO:  在此添加额外的初始化
      if(m_strSender == "我")
        GetDlgItem(IDC_STATIC_OLDPIN)->SetWindowText("我打开的");
      else if(m_strSender == "你")
        GetDlgItem(IDC_STATIC_OLDPIN)->SetWindowText("你打开的");
      else
        GetDlgItem(IDC_STATIC_OLDPIN)->SetWindowText("他打开的");  GetDlgItem(IDC_XXX)->SetFocus();
      return FALSE;  // return TRUE unless you set the focus to a control
    }或者void COpenUrlDialog::OnShowWindow(BOOL bShow, UINT nStatus)
    {
      CDialog::OnShowWindow(bShow, nStatus);  // TODO: 在此处添加消息处理程序代码
      GetDlgItem(IDC_STATIC_OLDPIN)->SetWindowText("文本");
      GetDlgItem(IDC_XXX)->SetFocus();
    }