实时搜索: mfc 几个对话框

mfc 几个对话框

796条评论 2471人喜欢 5622次阅读 712人点赞
我编写的是一个类似QQ的聊天软件,怎么实现多对话框呢 , 我MFC创建是直接第3个的 , 比如我有一个对话框1.上面有一个按钮BTN.

点击BTN弹出对话框2.但是我想在对话框2里面用到对话框1的BTN按钮的事件响应里的一个变量。
请问这个变量该怎么传递给对话框2? , 部分代码如下:
grade dlg; //grade是被调用窗口的类名
dlg.SetDlgItemTextA(IDC_BUTTON1,"hh"); //IDC_BUTTON1是想要修改的按钮的ID
UpdateData(false);
dlg.D...

mfc 一个对话框怎么弹出另外一个对话框:

在资源视图中右键点击dialog, 选择插入dialog,  双击新生成的dialog窗体, 会让你给新dialog命名, (就叫CNewdlg吧).

在主dialog的代码中写 #include "Newdlg.h"

在主dialog的初始化函数中写: CNewdlg* newdlg=new CNewdlg();

                                             newdlg->Create(IDD_NEWDLG,0);   //IDD_NEWDLG是新dialog的ID

在你想打开新dialog的地方写: newdlg->ShowWindow(SW_SHOWNORMAL);

  试试吧.

MFC中如何用多个类来控制一个对话框?: 对话框是一个窗口对象和窗口的结合,如果想在其他类中控制对话框,只要获取对话框对象或对话框对象指针就可以,所谓的对象其实就是一个变量,就如同你在不同的类中控制同一个变量一样。

MFC通过一个对话框类如何创建多个对话框: 1、先new,然后create。QQ中的弹出聊天对话框就是这样的。
2、或者创建后先隐藏,需要的时候更新一下相关参数,然后show
3、一般是多页签的对话框:好友列表、群列表、其它等等。
例如:
#pragma once
#include "resourceppc.h"
#include "friendname.h"

// TalkingDlg 对话框

class TalkingDlg : public CDialog
{
DECLARE_DYNAMIC(TalkingDlg)

public:
TalkingDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~TalkingDlg();
virtual BOOL OnInitDialog();

// 对话框数据
enum { IDD = Dialog_Talk };

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
public:

static DWORD RecvProc(LPVOID x);
BOOL StartThread();
afx_msg void OnBnCloseOk();
afx_msg void OnBtnSend();
afx_msg void OnPaint();
afx_msg LRESULT TOWriteMSG(WPARAM wParam,LPARAM lParam);

DECLARE_MESSAGE_MAP()
public:
CButton *Btn_send;
CListBox *LST_talking;
CEdit *Edt_write;
CStatic *STT_Imageinfo;
CStatic *STt_friendname;
HANDLE m_hThread;
CString recvstr;
BOOL targ;
friendname setName;
};

mfc 怎样将一个对话框的数组传送到另一对话框: 假设你的第一个对话框是dlg1,里面需要复制的数组是a;第二个对话框是dlg2,里面用来存放复制过来的数据的数组是b,那么直接
for (int i = 0; i < 数组a的长度;i++)
dlg2.b[i] = dlg1.a[i];

MFC对话框怎么传递参数给另一个对话框?: 重构对话框2的构造函数,传参数进去

MFC 如何在一个对话框中修改另一个对话框里按钮的标题?: 可以用构造函数传递字符串。
改写grade的构造函数,曾加一个字符串指针参数
grade::grade(LPCTSTR btTitle, CWnd *pParent) : m_btTitle(btTitle)//
{
}
要记得修改类里面的声明
grade(LPCTSTR btTitle, CWnd *pParent = NULL) ;
并给grade类添加成员变量
LPCTSTR m_btTitle;(这里我任意取名)
然后给在grade的虚函数OnInitDialog里面判断
if(m_btTitle)
SetDlgItemTextA(IDC_BUTTON1, m_btTitle);

使用时
grade dlg("hh", this);
dlg.DoModal();
如果不修改文本可以
grade dlg(NULL, this);
dlg.DoModal();

如果要在对话框已经弹出后再修改,那就要用自定义消息或者需要获取对话框窗口对象指针了。

VS环境下如何将mfc主对话框改为非模态对话框,另外,我创建了4个非模态对话框,要实现包括主对话框在内的:

如果你非要把主对话框改为非模态对话框,先找到app类的InitInstance()

CsheetDiaDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此放置处理何时用
// “确定”来关闭对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用
// “取消”来关闭对话框的代码
}

这里你可以看到主对话框显示的代码,你会写非模态对话框,自然知道怎么改。

不过我看你的需求,这种方法不算好,看看MFC的CPropertySheet和CPropertyPage类,

也许你会发现更好的方法,参考

http://hi.baidu.com/aijianmeng/item/8d5c2ece19864656ac00ef6b

http://jingyan.baidu.com/article/6d704a13dd463e28db51ca12.html

创建一个mfc基于对话框的应用程序,为什么运行后的编辑框中显示是选中的呢?: 很简单,因为对话框有一个TAB ORDER。
当一个控件的Order是对话框中的第一个,那么对话框打开后,这个控件是默认焦点,编辑框默认焦点的时候,文字就是选中状态。
调整TAB ORDER,在资源编辑器的对话框界面,你只要根据需求设置顺序就可以了。
如果希望编辑框默认焦点,有不是文本选中状态,就稍微麻烦一点,你需要在OnInitDialog里面做代码,将编辑框的文本选择状态去掉。

  • mac os 有哪些版本

    PET瓶片的用途: PET塑料瓶广泛用于包装碳酸饮料、饮用水、果汁、酵素和茶饮料等,还用于食品、化工、药品包装等方面。PET塑料瓶的回收利用不仅可以解决环保问题,而且可以做为一种新的原料资源,缓解中国PET原料不足的矛盾。是的,回首中国...

    865条评论 6186人喜欢 2831次阅读 918人点赞
  • gta5火箭狂雷在哪

    qq飞车咋就升级快了: GJ或做任务和刷局 ...

    542条评论 1581人喜欢 2671次阅读 912人点赞
  • 20W多少电

    北京朝阳区住这多少明星: 朱一龙貌似也在那儿 ...

    762条评论 2189人喜欢 5333次阅读 627人点赞