关于对话框的问题

goldntman 2002-10-18 01:23:08
有个问题,困扰了我很久,一直没解决!
我想作个聊天类oicq的东西。首先是个登陆的窗口(模态),登陆完毕后我把这个登陆窗口隐藏了起来(ShowWindow(SW_HIDE)),然后创建主程序窗口(非模态型的对话框),在这个主窗口中我又需要使用新的非模态窗口,但是我发现这个新的非模态窗口怎么也Create不起来,pmsgdlg->Create后,hwnd还是0x0000000

刚刚已经发了一个帖子,虽然有很多人回答了,但是都回答的和我意思不同。

我创建非模态对话框的步骤如下:
1.用资源编辑器画好对话框
2.建立派生对话框类
3.在对话框类中重载Create函数,直接返回CDialog:Create
4. CMsgDlg* pmsgdlg;
pmsgdlg=new CMsgDlg;
pmsgdlg->Create(pmsgdlg->IDD);
pmsgdlg->ShowWindow(SW_SHOW);
pmsgdlg->UpdateWindow();
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruihuahan 2002-10-18
  • 打赏
  • 举报
回复
关注
goldntman 2002-10-18
  • 打赏
  • 举报
回复
To jiangsheng(蒋晟.Net)
什么叫主窗口?你的意思是app的m_hWnd? 那么就是那个登陆的模态对话框了,但是我也没关闭它,我只是把它隐藏了.
goldntman 2002-10-18
  • 打赏
  • 举报
回复
To tigerfox(混合体:=初级程序员) :
pmsgdlg->IDD,对话框的头文件中已有定义:
enum { IDD = IDD_MSGDLG };
我直接使用定义时的IDD_MSGDLG也不行。但是直接用IDD却可以,不过IDD是chatdlg的对话框ID,我该怎么办那????

To hhuangchunlin(林之韵) :
我是基于对话框的程序,如何能删除它?
蒋晟 2002-10-18
  • 打赏
  • 举报
回复
主窗口关闭之后所有窗口的创建都会失败,除非重新指定主窗口
建议先创建一个隐藏的Frame作为主窗口。
hhuangchunlin 2002-10-18
  • 打赏
  • 举报
回复
你把登陆时的模态对话框销毁掉试试啊
tigerfox 2002-10-18
  • 打赏
  • 举报
回复

CMsgDlg* pmsgdlg;
pmsgdlg=new CMsgDlg;
pmsgdlg->Create(pmsgdlg->IDD); //此处?你想想你分配一个CMsgDlg,其内容为乱七八糟,成员IDD的值是什么??
pmsgdlg->ShowWindow(SW_SHOW);
pmsgdlg->UpdateWindow();


try...

CMsgDlg* pmsgdlg;
pmsgdlg=new CMsgDlg;
pmsgdlg->Create(IDD);
pmsgdlg->ShowWindow(SW_SHOW);
pmsgdlg->UpdateWindow();

goldntman 2002-10-18
  • 打赏
  • 举报
回复
登陆窗口类的处理函数:
void CClientDlg::OnConnect()
{
// TODO: Add your control notification handler code here
UpdateData(true);
CString strip;
DWORD ipaddress;
m_address.GetAddress(ipaddress);
strip.Format("%d.%d.%d.%d",HIBYTE(HIWORD(ipaddress)),LOBYTE(HIWORD(ipaddress)),HIBYTE(LOWORD(ipaddress)),LOBYTE(LOWORD(ipaddress)));
if(!InitSocket((char*)(LPCTSTR)strip))
{
MessageBox("初始化Socket stack错误!");
return;
}
//send my name
char myname[128];
sprintf(myname,"MYNAMEIS:%s",(char*)(LPCTSTR)m_username);
send(localsocket,myname,sizeof(myname),0);
ShowWindow(SW_HIDE);
//CChatDlg chatdlg;
//chatdlg.DoModal();
m_pChatDlg->Create();
}

//主窗口中又需要使用新的非模态窗口
void CChatDlg::OnDblclkListman(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
char ToName[64];
memset(ToName,0,sizeof(ToName));
m_listman.GetItemText(m_listman.GetSelectionMark(),0,(LPTSTR)ToName,sizeof(ToName));
CMsgDlg* pmsgdlg;
pmsgdlg=new CMsgDlg;
pmsgdlg->Create(pmsgdlg->IDD);
pmsgdlg->ShowWindow(SW_SHOW);
pmsgdlg->UpdateWindow();
*pResult = 0;
}


everandforever 2002-10-18
  • 打赏
  • 举报
回复
首先是个登陆的窗口(模态),登陆完毕后我把这个登陆窗口隐藏了起来(ShowWindow(SW_HIDE)),然后创建主程序窗口(非模态型的对话框),
______________
这两步是在INITINSTANCE里面做的吗? 贴代码看看.


在这个主窗口中我又需要使用新的非模态窗口
_____________
这一步在哪里做的? 代码.
riverboat 2002-10-18
  • 打赏
  • 举报
回复
gz
在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是给出了创建各种类型对话框的方法 并为给出创建对话框之后 并为给出如何用户获取在对话框中做出选择后的数据 即如何监听用户做出的选择 接下来笔者将根据JavaDoc API文档引导读者详细的了解提示对话框 文本框对话框 简单列表对话框 单选项列表对话框 多选项列表对话框 自定义对话框6种类型对话框监听事件的具体处理过程 1 创建提示对话框 笔者为该对话框添加了3个按钮 分别是 PositiveButton (确定) NeutralButton NegativeButton(取消) 中文意思是积极的按钮(确定) 中立的按钮 消极的按钮(取消) 按字面意思翻译 有点怪 但是很形象 创建提示对话框并实现监听事件的代码如下: 2 创建文本框对话框 笔者为该对话框添加了1个文本 一个PositiveButton (确定) 一个NegativeButton(取消) 并实现了PositiveButton点击监听事件 点击后后去文本框里的内容 并以toast形式显示出来 创建文本框对话框并实现监听事件的代码如下: 3 创建简单列表对话框 笔者为该对话框添加了一个数组显示列表 并实现了点击列表item选项监听事件 点击item选项后获取item内容 并以toast形式显示出来 查阅JavaDoc API文档 读者可根据JavaDoc API文档来了解如何实现单击item选项监听事件 如下列出的setItems 方法第2个参数易知只要为第2个参数提供OnClickListener实例即可实现监听事件 读者可通过这种方式触类旁通以下几种对话框监听事件的实现 学会通过查阅JavaDoc API文档来解决问题是一项开发必备的编程能力 创建简单列表对话框并实现监听事件的代码如下: 4 创建单选按钮列表对话框 笔者为该对话框添加了一个单选按钮数组显示列表 并实现了点击item选项监听事件 点击item选项后获取item内容 并以toast形式显示出来 5 创建复选框列表对话框 笔者为该对话框添加了一个复选框数组显示列表 并实现了点击复选框选项监听事件 选中复选框选项后 获取所有选中的选项 并以toast形式显示出来 创建复选框列表对话框并实现监听事件的代码如下: 6 创建自定义列表对话框 笔者为该对话框添加了自定义的布局文件 该自定义布局文件包含一个文本标签和一个文本框 并实现了确定按钮点击监听事件 在文本框输入内容后 获取文本框里的内容 并以toast形式显示出来 创建自定义列表对话框并实现监听事件的代码如下: 参见blog:http: blog csdn net andie guo article details 14145135">在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是给出了创建 [更多]

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧