【发布时间】:2013-06-04 14:17:34
【问题描述】:
我正在尝试在 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
【问题讨论】:
-
uMsg进入TextCharDlgProc时的值能看一下吗? -
无论如何,我的猜测是对话框的创建失败,要么是因为模板有些怪异,要么是因为它根本无法在指定的模块中找到。
-
@rodrigo:它从 48 开始,然后变化,但它永远不会进入 WM_INITDIALOG,我想知道我可能哪里出错了
-
@rodrigo :我想我已经找到了问题所在,这是因为我使用富编辑文本框作为聊天窗口内的对话区域。如果我取出丰富的编辑框,该对话框工作正常。有什么建议!!
-
该问题具有误导性,因为该问题甚至在单击菜单之前就已发生。以后遇到相同问题的访问者将看不到此答案,因为标题与问题不匹配。
标签: c++ windows winapi visual-c++ mfc