0

win32 のメイン ウィンドウのメニュー項目クリックでチャット ウィンドウを実装しようとしています。メイン ウィンドウを作成し、次の方法でチャット ウィンドウを処理しています。

    int CALLBACK TextChat::TextChatDlgProc(  HWND hwndDlg,  UINT uMsg,  WPARAM wParam, LPARAM lParam )
{
    LPDRAWITEMSTRUCT pdis;
    static HBRUSH hBrush;  
    static COLORREF GrayColor; 

    switch (uMsg) 
    {
        case WM_COMMAND:
            switch (LOWORD(wParam)) 
            {

            }
            break;
        case WM_CLOSE:
            EndDialog(hwndDlg, 1);
            return true;           
            break;





        case WM_INITDIALOG:
        {


            CentreWindow(hwndDlg);
            ShowWindow(hwndDlg,SW_SHOW);
            UpdateWindow(hwndDlg);
            return TRUE;

        }
    }   
    return 0;
}
int TextChat::DoDialog()
{

    //CreateWindowEx(


    return DialogBoxParam(this->m_pApp->m_instance,MAKEINTRESOURCE(IDD_CHAT_DIALOG), 
        NULL, (DLGPROC) TextChatDlgProc, (LONG) this->m_pCC);
}

そして、メニュー項目クリックのメインウィンドウから、次のようにしています:

case WM_SYSCOMMAND:
        {
            switch (LOWORD(wParam))
            {
                case ID_TEXT_CHAT:
                    if(thisClass->m_pTextChat == NULL)
                        thisClass->m_pTextChat = new TextChat(thisClass->m_pApp,thisClass);
                    thisClass->m_pTextChat->DoDialog();

だから私はVS2008を使用しており、デバッグ中にデバッガーは TextChatDlgProc 内に入りますが、 WM_INITDIALOG 内に入ることはなく、そのように戻ります。したがって、チャット ウィンドウ (リソース IDD_CHAT_DIALOG) は表示されません。この問題を解決するための指針は大歓迎です。ティア

よろしく、

4

2 に答える 2

0

未処理のメッセージを呼び出すTextChatDlgProc()必要がある場合は、未処理のメッセージDefWindowProc()に対してFALSE を返します (デフォルト: 大文字と小文字を切り替えます)。

于 2013-06-01T08:15:09.367 に答える