MFC通过一个对话框类如何创建多个对话框

MFC通过一个对话框类如何创建多个对话框,第1张

1、先new,然后create。QQ中的d出聊天对话框就是这样的。

2、或者创建后先隐藏,需要的时候更新一下相关参数,然后show

3、一般是多页签的对话框:好友列表、群列表、其它等等。

例如:

#pragma once

#include "resourceppch"

#include "friendnameh"

// 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;

};

进攻参考:

clist::removeall

void

removeall(

);

说明:

从此列表中删除所有元素并释放相关的内存。如果列表已经是空的,则不会出错。

请参阅:clist::removeat

可以用richedit完成了,属性里把Multiline设置为true,CXXXXApp::InitInstance()中加入::AfxInitRichEdit();进行初始化,主要api有:GetCurSel GetLBText SetWindowText

首先获取列表选中的内容,再声明编辑对话框,如下:

CEditDlg dlg;

在打开显示dlg之前把获取的列表内容传递给CEditDlg对话框类:

dlgm_edit1 = aaa;

然后显示编辑对话框:

dlgDoModel();

编辑窗口关闭时可以读取dlgm_edit1来获取修改后的内容。对话框关闭时,注意将编辑控件的内容更新到m_edit1变量中。

GetCurSel函数只能获取你的索引值。在配合这个函数GetText 就可以了。

CString result;

int selectedPos = YourListGetCurSel();

YourListGetText(selectedPos, result);

//result里才是你真正的值。

你可以是用MessageBox(result);看哈你的值正不正确。

//添加一个NM_DBCLK的消息

//以下是消息响应函数

void CCListCtrlTestDlg::OnDblClkItem()

{

//获取选中的的一个位置

POSITION p=m_listCtrlGetFirstSelectedItemPosition();

if (p == NULL)

{

TRACE("没有行被选中!");

}

//获取刚选取的位置的下标(从0开始的)

int index = m_listCtrlGetNextSelectedItem(p);

//获得选中的内容

//得到第index行第0列的内容(下标从0开始)

CString FirstColumn=m_listCtrlGetItemText(index,0);

//得到第index行,第1列的内容

CString SecondColumn=m_listCtrlGetItemText(index,1);

}

第二种方法:

可以增加一个LVN_ITEMCHANGED的消息

当鼠标指向的"行"发生变化,该消息就会被触发

void CCListCtrlTestDlg::OnItemchangedList1(NMHDR pNMHDR, LRESULT pResult)

{

//所有的控件都是在视图上进行 *** 作的,这里系统会自动保存我们选中那行的信息就在pNMHDR类型中

//将该视图类型转换成我们需要的类型NM_LISTVIEW

//这是针对列表控件的视图类型

NM_LISTVIEW pNMListView = (NM_LISTVIEW)pNMHDR;

if (pNMListView->uNewState&LVIS_SELECTED) //判断是否为选中状态

{

/获得选中的内容

//得到第index行第0列的内容(下标从0开始)

CString FirstColumn=m_listCtrlGetItemText(index,0);

//得到第index行,第1列的内容

CString SecondColumn=m_listCtrlGetItemText(index,1);

}

}

如果有不清楚,可以在线留言!

希望对你有帮助!

以上就是关于MFC通过一个对话框类如何创建多个对话框全部的内容,包括:MFC通过一个对话框类如何创建多个对话框、MFC 列表控件(CList)的问题、MFC中文本框怎么获取两个单独下拉列表每一次选择的值,形成对应的两列,多次就多行,最好给个例子,菜鸟等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9664788.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存