簡體   English   中英

帶有豐富編輯控件的子窗口未加載到菜單項上

[英]child window with rich edit controls not loading on menu item click inside main window

我正在嘗試在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);
}

從菜單項clic的主窗口中,我通過以下方式進行操作:

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)。 任何解決這個問題的指針都將不勝感激。 TIA

問候,grv

您的TextChatDlgProc()需要 調用 DefWindowProc()處理未處理的消息, 返回FALSE來處理未處理的消息(默認:切換大小寫)

您在評論中說該對話框具有豐富的編輯控件。 那是關鍵!

您必須先手動加載相關的庫,然后才能使用這些控件。 其中之一:

LoadLibrary(TEXT("Msftedit.dll")); // for MSFTEDIT_CLASS
LoadLibrary(TEXT("Riched32.dll")); // for RICHEDIT_CLASS 3.2
LoadLibrary(TEXT("Riched20.dll")); // for RICHEDIT_CLASS 2.0

您只需在WinMain()執行一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM