使用MFC做了一个聊天程序,我在父窗口进行服务器的链接和接收服务器发来的数据,子窗口用来显示接收的数据

2024-12-25 17:21:05
推荐回答(3个)
回答1:

如果采用模式对话框,在模式对话框运行期间,父窗口是不能执行其它工作的,也就是说父窗口是不能再接收数据了。
这样的设计必须要用到无模式对话框,在父窗口中保存一个子窗口的指针,当有数据到达时,通过子窗口指针调用子窗口的函数来显示数据,程序大概如下:
class CChildWnd
{
void ShowMessage();
};
class CParentWnd
{
protected:
CChildWnd * pChild;
protected:
void Start();//启动显示,打开子窗口
void Stop();//停止显示
void OnDataRecv(txt);//服务器数据到达
};

CParentWnd::CParentWnd()
{
pChild=0;
}
void CParentWnd::OnStart()
{
if(pChild!=0) return; //子窗口对话框已经打开,直接返回
pChild=new CChildWnd;
pChild->CreateDialog();
pChild->OnInitDialog();
pChild->ShowWindow(SW_SHOW);
}
void CParent::Stop()
{
if(pChild==0) return;
pChild->DestroyWindow();
delete pChild;
}

void CParent()::OnDataRecv(txt)
{
if(pChild==0) return; //子窗口没打开,返回
pChild->ShowMessage(txt);
}

回答2:

HWND GetParent(
HWND hWnd
);
获取父窗口的指针。具体使用可以查MSDN

回答3:

学习下套接字编程呗 然后 在listbox 里面显示 或者listctrl 里面显示 套接字里 的onaccpt