大家好,问题描述: 如果一个用户和我聊天 给我发消息, 我这边就会弹出一个对话框像QQ那样 聊天窗口,
如果该用户又给我发送消息,应该是把消息发送到 我先前开启的那个窗口, 但是我程序出错了 他是又重新建立个窗口,
开始 我的思路是先查找看看 桌面上有不有这个窗口我用FindWindow但是我UI 框架是购买的别人公司的所以不能获取句柄 这条路就死了。
我的代码如下
RESULT CMainFrame::OneShowMsg(WPARAM wParam, LPARAM lParam)
{
char *MsgInfo=(char*)lParam;
// CWnd * hMsgHandle=FindWindow(NULL,strRefmoteName.c_str());
CMsg *MsgWindow=new CMsg;
MsgWindow->Create(IDD_MSG);
MsgWindow->ShowWindow(SW_SHOW);
duWindow *dWindow=theApp.GetWindowManager()->duGetWindow(MsgWindow->m_hWnd);
duEdit *eitMsg=(duEdit*)dWindow->GetPluginByName("edit_RefMsg");
GoToEncoding GoEndoing;
char *strGbk=new char[1024];
。。
CMsg就是我的聊天窗口
大家请帮下 我这里要如何处理 不实用句柄的方式 , 我是不是要把CMsg 对象都保存起来 然后每次显示窗口的时候我在去查找这个窗口有不有!, 这个思路 如何 如果可以如何保存。。
如果该用户又给我发送消息,应该是把消息发送到 我先前开启的那个窗口, 但是我程序出错了 他是又重新建立个窗口,
开始 我的思路是先查找看看 桌面上有不有这个窗口我用FindWindow但是我UI 框架是购买的别人公司的所以不能获取句柄 这条路就死了。
我的代码如下
RESULT CMainFrame::OneShowMsg(WPARAM wParam, LPARAM lParam)
{
char *MsgInfo=(char*)lParam;
// CWnd * hMsgHandle=FindWindow(NULL,strRefmoteName.c_str());
CMsg *MsgWindow=new CMsg;
MsgWindow->Create(IDD_MSG);
MsgWindow->ShowWindow(SW_SHOW);
duWindow *dWindow=theApp.GetWindowManager()->duGetWindow(MsgWindow->m_hWnd);
duEdit *eitMsg=(duEdit*)dWindow->GetPluginByName("edit_RefMsg");
GoToEncoding GoEndoing;
char *strGbk=new char[1024];
。。
CMsg就是我的聊天窗口
大家请帮下 我这里要如何处理 不实用句柄的方式 , 我是不是要把CMsg 对象都保存起来 然后每次显示窗口的时候我在去查找这个窗口有不有!, 这个思路 如何 如果可以如何保存。。
谢谢,我有两个仿QQ的界面,一个是你看到的,用来做Demo. 另一个是给一家物流公司开发的.------------------------------------------------------------------------
BOOL CClientDlg::SearchSendDlg(int nID,POSITION &ptPos)
{
BOOL bRet = FALSE;
int nCount = m_pSdDlgList.GetCount();
if (nCount != 0)
{
POSITION pos = m_pSdDlgList.GetHeadPosition();
while (pos != NULL)
{
CSendDlg *pDlg = NULL;
ptPos = pos;
pDlg = (CSendDlg *)m_pSdDlgList.GetNext(pos);
if (pDlg != NULL)
{
if (pDlg->m_UserID == nID)
{
bRet = TRUE;
break;
}
}
else
ptPos = NULL;
}
}
return bRet;
}