MFC_C++02_模态对话框,非模态对话框,StaticText静态文本,CEditCtrl控件,ComboBox下拉框,CListCtrl控件,CTreeCtrl 树控件,TabCtrl标签控件

01 模态对话框创建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

更改标题名:
在这里插入图片描述
菜单栏 --> 视图—>工具箱 ,找到工具箱

导入两个按钮:
在这里插入图片描述
准备对话框:
插入就可以了,更改名称
在这里插入图片描述
双击按钮,可以进入点击事件

在这里插入图片描述
创建控件的类:右击->创建类
多了CDlgExex.h,并需要导入01 DialoglDlg
在这里插入图片描述
添加代码:

void CMy01Dialog1Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	//点击按钮,弹出模态对话框
	CDlgExex dlg;
	//模态方式弹出对话框
	dlg.DoModal();
}

在这里插入图片描述

02 非模态对话框创建

其他步骤同01 步骤
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

void CMy01Dialog1Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	//弹出非模态对话框
	//CDlgShow dlg; //保存到了成员属性中,不会被释放掉
	//dlg.Create(IDD_SHOW); //不允许创建多次 dlg ,写到OnInitDialog初始化代码中
	dlg.CenterWindow();//居中显示
	dlg.ShowWindow(SW_SHOWNORMAL);
}

在这里插入图片描述

03 StaticText静态文本使用

更改标题名
在这里插入图片描述
在这里插入图片描述
IDC_STATIC中STATIC的控件不可更改,所有需要更改名称
在这里插入图片描述

右击-》添加变量,更改里面配置
在这里插入图片描述
查看属性变量
方法一:右击—》类向导
在这里插入图片描述
方法二:类视图
在这里插入图片描述

void CMy02StaticTextDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	//点击设置按钮,设置为文本 呵呵
	m_Text.SetWindowTextW(TEXT("呵呵"));
}


void CMy02StaticTextDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	//点击获取按钮,获取到控件当前的文本

	CString str;
	m_Text.GetWindowTextW(str);
	MessageBox(str);
}

在这里插入图片描述
设置图片:
添加控件,更改名称
在这里插入图片描述
更改名称:
在这里插入图片描述
为了一运行就有图片,需要初始化中添加

	// TODO: 在此添加额外的初始化代码
	//static Text显示图片
	//设置静态控件窗口
	m_Img.ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);

	//通过路径获取bitmap句柄
    #define HBMP(filepath,width,height) (HBITMAP)LoadImage(AfxGetInstanceHandle(), filepath, IMAGE_BITMAP, width, height,LR_LOADFROMFILE | LR_CREATEDIBSECTION)

	//静态控件设置bitmap
	m_Img.SetBitmap(HBMP(TEXT("./1.bmp"), 300, 250));
	
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

在这里插入图片描述
在这里插入图片描述
上述图片显示不全,以下方案解决:


	// TODO: 在此添加额外的初始化代码
	//static Text显示图片
	//设置静态控件窗口
	m_Img.ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);

	//通过路径获取bitmap句柄
    #define HBMP(filepath,width,height) (HBITMAP)LoadImage(AfxGetInstanceHandle(), filepath, IMAGE_BITMAP, width, height,LR_LOADFROMFILE | LR_CREATEDIBSECTION)

	//获取控件宽度和高度,设置到图片中
	CRect rect;
	m_Img.GetWindowRect(rect);

	//静态控件设置bitmap
	m_Img.SetBitmap(HBMP(TEXT("./1.bmp"), rect.Width(), rect.Height()));

在这里插入图片描述
在这里插入图片描述
获取按钮标签:
在这里插入图片描述
在这里插入图片描述

void CMy02StaticTextDlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	//获取按钮当前内容
	CString str;
	m_btn.GetWindowTextW(str);
	MessageBox(str);

	//设置内容
	m_btn.SetWindowTextW(TEXT(" ^ _^"));

	//禁用按钮
	m_btn.EnableWindow(FALSE);
}

在这里插入图片描述

04 CEditCtrl控件使用

防止敲回车,对话框消失,更改多行属性
在这里插入图片描述
相应换行,更改属性:
在这里插入图片描述
横纵向可以无限输入,更改属性:
在这里插入图片描述
回到第一行,增加滚动条,更改属性:
在这里插入图片描述
添加成员变量:
在这里插入图片描述
edit1初始化:
在这里插入图片描述

void CEditCtrlDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	//点击赋值,将edit1内容,粘贴到edit2中
	CString str;
	m_edit1.GetWindowTextW(str);
	m_edit2.SetWindowTextW(str);

}


void CEditCtrlDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	//点击关闭
	//退出整个程序
	//exit(0);

	//退出当前对话框
	//CDialogEx::OnOK();
	CDialogEx::OnCancel();
}

在这里插入图片描述
解决:一行输入回车,对话框没有
在这里插入图片描述
右击-》属性-》OnOK重写
在这里插入图片描述

void CEditCtrlDlg::OnOK()
{
	// TODO: 在此添加专用代码和/或调用基类
	//一按回车,关联OnOk代码
	//CDialogEx::OnOK();
}

更改成员变量:
在这里插入图片描述
在这里插入图片描述


void CEditCtrlDlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	//设置edit3内容

	m_edit3 = TEXT("哈哈");

	//将变量 同步到控件上
	UpdateData(FALSE);
}


void CEditCtrlDlg::OnBnClickedButton4()
{
	// TODO: 在此添加控件通知处理程序代码

	//将控件里的内容,同步到变量中
	UpdateData(TRUE);
	MessageBox(m_edit3);
}

在这里插入图片描述

05 ComboBox下拉框使用

添加数据;更改属性:
在这里插入图片描述
想要数据按自己输入的顺序输出,更改属性:改为false
在这里插入图片描述
一般数据是代码中写的,需要进行如下操作:
在这里插入图片描述
当选中更改时,输出信息,需要重写下面这个函数:
在这里插入图片描述


	// TODO: 在此添加额外的初始化代码

	//在下拉框添加数据
	m_cbx.AddString(TEXT("唐僧"));
	m_cbx.AddString(TEXT("孙悟空"));
	m_cbx.AddString(TEXT("猪八戒"));
	m_cbx.AddString(TEXT("沙僧"));

	//设置默认选中值 setCurrentSelect
	m_cbx.SetCurSel(0);

	//开除沙僧
	m_cbx.DeleteString(3);

	//添加白龙马
	m_cbx.InsertString(2, TEXT("白龙马"));

	//根据索引查找内容
	CString str;
	m_cbx.GetLBText(2, str);
	MessageBox(str);

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CMy04ComboxCtrlDlg::OnCbnSelchangeCombo1()
{
	// TODO: 在此添加控件通知处理程序代码
	//获取到当前索引,getCurrentSelect
	int index = m_cbx.GetCurSel();
	CString str;
	m_cbx.GetLBText(index, str);
	MessageBox(str);
}

在这里插入图片描述

06 CListCtrl控件使用

在这里插入图片描述
改成报表模式:
在这里插入图片描述
添加变量:
在这里插入图片描述


	// TODO: 在此添加额外的初始化代码
	//listctrl 控件进行初始化
	//插入表头
	CString str[3] = { TEXT("姓名"),TEXT("性别") ,TEXT("年龄") };
	for (int i = 0; i < 3; i++)
	{
		m_list.InsertColumn(i, str[i], LVCFMT_LEFT, 100);
	}

	//设置正文,依然从0开始索引

	//设置张三,当前行
	//m_list.InsertItem(0, TEXT("张三"));
	//补充张三行 其他内容
	//m_list.SetItemText(0, 1, TEXT("男"));
	//m_list.SetItemText(0, 2, TEXT("18"));

	for (int i = 0; i < 10; i++)
	{
		int j = 0;
		CString name;
		name.Format(TEXT("张三_%d"), i);
		m_list.InsertItem(i, name);
		m_list.SetItemText(i, ++j, TEXT("男"));
		m_list.SetItemText(i, ++j, TEXT("18"));
	}

	//设置风格,整行选中,加入网格线
	m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);//整行选中
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

在这里插入图片描述

07 CTreeCtrl 树控件使用

树形出现线,更改属性:
在这里插入图片描述
节点与节点之间有按钮:
在这里插入图片描述
根节点与根节点之间有线:
在这里插入图片描述
在这里插入图片描述
添加图片:
在这里插入图片描述
在这里插入图片描述

	// TODO: 在此添加额外的初始化代码
	//treeCtrl 控件使用
	//1.设置资源
	//准备HICON
	HICON icon[4];
	icon[0] = AfxGetApp()->LoadIconW(IDI_ICON1);
	icon[1] = AfxGetApp()->LoadIconW(IDI_ICON2);
	icon[2] = AfxGetApp()->LoadIconW(IDI_ICON3);
	icon[3] = AfxGetApp()->LoadIconW(IDI_ICON4);
	//CImageList list; 已经放在.h中,做成员属性了
	//准备好list图标集合
	list.Create(30, 30, ILC_COLOR32, 4, 4);
	//加载图片
	for (int i = 0; i < 4; i++)
	{
		list.Add(icon[i]);
	}
	m_tree.SetImageList(&list, TVSIL_NORMAL);

	//2 设置节点
	HTREEITEM rootItem = m_tree.InsertItem(TEXT("根节点"), 0, 0, NULL);
	HTREEITEM parentItem = m_tree.InsertItem(TEXT("父节点"), 1, 1, rootItem);
	HTREEITEM sub1 = m_tree.InsertItem(TEXT("子节点1"), 2, 2, parentItem);
	HTREEITEM sub2 = m_tree.InsertItem(TEXT("子节点2"), 3, 3, parentItem);

	//默认选中 子节点1
	m_tree.SelectItem(sub1);

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

在这里插入图片描述
一个节点到另一个节点的事件:
在这里插入图片描述

void CMy06CTreeCtrlDlg::OnTvnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码

	//获取到当前选中节点的内容
	//获取当前选中的行 Item
	HTREEITEM item = m_tree.GetSelectedItem();

	//根据当前选中的行,获取里面的内容
	CString str = m_tree.GetItemText(item);
	MessageBox(str);

	*pResult = 0;
}

在这里插入图片描述

08 TabCtrl标签控件使用

详细
tabSheet.h tabSheet.cpp内容

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值