怎么对于同一个用户,只弹出一次对话框,对于其他没有打开聊天用户的,新弹出对话框
我是用
if (m_ptdlg)
{
m_ptdlg->SetForegroundWindow();
}
else
        {
                ...
        }
但这样只能弹出一个对话框,请问一般来说应该怎么判断是不是同同一个人聊天?

解决方案 »

  1.   

    有可能我说的不清楚,这样说吧
    比如我的用户列表里面有a、b两个人
    点击a的时候弹出和a的聊天对话框,再次点击a只会激活这个对话框,
    但点击b会重新创建一个和b的聊天对话框,再次点击b就激活与b聊天的对话框。
    意思就是怎么做到对于同一个人只创建一个对话框?明白?
      

  2.   

    每个好友唯一的是什么呢?
    是QQ号
    我觉得 是根据QQ号来判断 是否新创建一个聊天窗口出来
    已经有以该QQ号为"关键字"创建的聊天窗口的话激活它
    没有的情况下 再创建
      

  3.   

    三楼说的没错保留窗口句柄,等窗口销毁是吧保存的句柄置空,通过判断窗口句柄来操作。可以用SetForegroundWindow、SetActiveWindow、BringWindowToTop、SetWindowPos等函数来把窗口置前
      

  4.   

    创建非模态的 template然后无限制新开模态对话框
      

  5.   

    我来结束这个帖子吧  我从事过即时通讯软件开发的.当你点击新的用户的时候 如果这个用户不存在,我会将他的窗口指针值和用户ID两个变量作为一个结构体.保存在vector容器中.然后下次打开另一个用户的时候 遍历vector里是否已经存在用户的ID 如果存在则给与窗口焦点 也就是窗口指针变量的作用.如果不存在则新建并储存当其中窗口关闭的时候获取其用户的ID 在vector中移除 以便于下次判断.
      

  6.   

    struct
    {
    *Cwnd p_wnd;
    Cstring userid;
    }遍历容器 不存在 此时遍历(容器为空)-将结构体插入到容器容器
    地址1   ID1再开启另外一个对话框 此时遍历-不存在 将结构插入容器容器
    地址1   ID1
    地址2   ID2再次点击第二次开启的用户,此时遍历-循环第二次找到用户ID,取出CWND指针->激活.  然后关闭本窗口,此时从容器中移除
    容器
    地址1   ID1
    ......以此类推
      

  7.   

    没用过vector啊,VsirSoft 兄能提供点代码么?
      

  8.   

    VsirSoft 兄,请问你说说的窗口焦点是指新建的窗口句柄么,我还没创建对话框的又怎么能得到呢,还是说开始只比较ip和用户名?
      

  9.   

    当你点击新的用户的时候 如果这个用户不存在,我会将他的窗口指针值和用户ID两个变量作为一个结构体.保存在vector容器中. 然后下次打开另一个用户的时候 遍历vector里是否已经存在用户的ID 如果存在则给与窗口焦点 也就是窗口指针变量的作用.如果不存在则新建并储存 当其中窗口关闭的时候获取其用户的ID 在vector中移除 以便于下次判断.