
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中文本框怎么获取两个单独下拉列表每一次选择的值,形成对应的两列,多次就多行,最好给个例子,菜鸟等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)