請問在一個自訂的class,要怎麼樣去改變一個繼承自CDialog的對話盒
上的CButton的文字,CButton是由 CButton *m_pBtn 動態產生
CButton *m_pBtn 是在Dialog裡創建的
而且該自訂class沒有繼承之MFC用GetDlgItem嗎,可是它需傳入HWND..是否能取得該dialg的位址呢?
thx

解决方案 »

  1.   

    通过控件ID SetDlgItemText(IDC_BUTTON1, "111");
      

  2.   

    樓主好像有點概念不清哦,自定義的class繼承自父類的CDialog,當窗口被創建時,他們父類和子類根本就是同一個句柄HWND。樓上的可以解決,你用GetDlgItem的話,只要把自己的句柄傳進去就可以了。
      

  3.   

    你們誤會我的意思了..我額外自訂了一個class不是繼承自CDialog的,也不是MFC的
    而該自訂class想要去變更一個Dialog其繼承之CDialog的對話盒上的button的文字
      

  4.   


    //如果非主對話盒
    HWND hDlg = ::FindWindow(NULL,"dlg标题");
    ::SetDlgItemText(hDlg,控件id,"test");
    //如果主對話盒
    ((CxxxDlg *)AfxGetMainWnd())->m_pBtn->SetWindowText("test");
      

  5.   

    seu07201213(【卐】〖汪洋中的一片叶子〗≈^︵^≈) 
    的方法確實可行..想再請問一下,一般的作法都是這樣嗎
    ,假如碰到程式標題和我的程式一樣會造成混亂嗎..
    thx
      

  6.   

    FindWindow的第一個參數lpszClassName也可以,如果遇到標題為空之類的對話盒,不管你用什麽辦法,先弄到它的ClassName再説(大致可以先寫個別的小程式,用WindowFromPoint先取得HWND,然後用GetClassName獲得),這樣就有兩個參數確定了。如果不幸兩個參數都相同的話,估計只能用EnumWindows了。最後問一句你要改變的對話盒是你自己寫的程式的一部分麽?如果是的話,全局變量或者參數之類的方法,很容易就可以取得HWND的啊?如果不是的話,那大概只能用以上方法了。
      

  7.   

    我嘗試在Dialog建構子用GetSafeHwnd();
    但還是得不到HWND 只得位置是0x00000000的HWND