12 MFC常用控件(一)

该文详细介绍了如何在WindowsGUI程序中操作按钮控件,包括设置默认按钮响应回车、禁用/启用、隐藏/显示、设置图片和图标,以及Cbutton类的使用。此外,还涵盖了编辑框、组合框、下拉框和列表控件的基本操作,如插入数据、获取选中项等。
摘要由CSDN通过智能技术生成

button 按钮

设置默认按钮按下回车后会响应

在这里插入图片描述

void CDemoDlg::OnBnClickedBtnTest()
{
	MessageBox(L"按下回车");
}

禁用

在这里插入图片描述

开启禁用

GetDlgItem(IDC_BTN_TEST)->EnableWindow(TRUE);

设置隐藏

在这里插入图片描述

设置显示

GetDlgItem(IDC_BTN_TEST)->ShowWindow(SW_SHOW);

设置图片

开启位图

在这里插入图片描述

放置BMP图片

在这里插入图片描述

选择Bitmap

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

在文件里选择所有文件导入图片

在这里插入图片描述

设置属性修改ID

在这里插入图片描述

  //加载图片
	CBitmap bmp;
	bmp.LoadBitmap(IDB_TEST);
	//获取图片大小
	BITMAP logBmp;
	bmp.GetBitmap(&logBmp);

	//获取按钮
	CButton* pTestBtn = (CButton*)GetDlgItem(IDC_BTN_TEST);
	pTestBtn->MoveWindow(0, 0, logBmp.bmWidth, logBmp.bmHeight);//将图片与按钮大小一致
	pTestBtn->SetBitmap(bmp);

在这里插入图片描述

设置Icon

在这里插入图片描述

    CButton* pTestBtn = (CButton*)GetDlgItem(IDC_BTN_TEST);
	pTestBtn->SetIcon(m_hIcon);

在这里插入图片描述

设置光标

在这里插入图片描述

//设置光标
BOOL CDemoDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
	if (pWnd->GetDlgCtrlID() == IDC_BTN_TEST)//获取窗口
	{
		HCURSOR hCursor = LoadCursor(NULL, IDC_CROSS);
		SetCursor(hCursor);
		return TRUE;
	}

	return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
}

请添加图片描述

Cbutton 类

在这里插入图片描述

创建按钮

#define IDC_BTN_TEST2 1025
    CButton m_button;
	m_button.Create(L"自创button", WS_CHILD | WS_VISIBLE, CRect(100, 100, 200, 200), this, IDC_BTN_TEST2);

在这里插入图片描述

创建消息

在这里插入图片描述

消息映射

void CDemoDlg::OnBnClickedBtnTest2()
{
	MessageBox(L"Test2");
}

在这里插入图片描述

单选按钮

单选按钮选组长(必须)

在这里插入图片描述

CButton m_radio;
m_radio.Create(L"男", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, CRect(20, 20, 70, 50), this, 1234);
	m_radio.SetCheck(0);

在这里插入图片描述

多选按钮

    CButton m_radio;
    m_radio.Create(L"男", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON|BS_CHECKBOX, CRect(20, 20, 70, 50), this, 1234);
	m_radio.SetCheck(0);

编辑框

int CDemoEditDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialogEx::OnCreate(lpCreateStruct) == -1)
		return -1;

	//获取客户区大小
	CRect rect;
	GetClientRect(&rect);
	m_edit.Create(WS_CHILD | WS_VISIBLE |WS_VSCROLL| WS_BORDER | ES_WANTRETURN  | ES_MULTILINE | ES_LEFT | ES_AUTOVSCROLL, rect, this, IDC_TEST_EDIT);
	//m_edit.ModifyStyle(WS_);//移除风格

	return 0;
}
//滚动响应
void CDemoEditDlg::OnVscrollEdit1()
{
	//m_edit.ModifyStyle(0,WS_VSCROLL);
	//DWORD dwStyle = GetWindowLong(m_edit.m_hWnd, GWL_STYLE);//获取原来的风格
	//dwStyle = dwStyle | WS_VSCROLL;
	//SetWindowLong(m_edit.m_hWnd, GWL_STYLE, dwStyle);

	
}

组合框

写入数据,每个数据之间用封号隔开

在这里插入图片描述

在这里插入图片描述

    //插入数据
	CComboBox* m_pcombBox = (CComboBox*)GetDlgItem(IDC_COMBO2);//获取combBox
	m_pcombBox->AddString(L"中国");
	m_pcombBox->AddString(L"美国");
	m_pcombBox->AddString(L"日本");
	m_pcombBox->InsertString(1, L"印度");//设置插入位置
	m_pcombBox->SetCurSel(2);//设置当前所选

取消排序

在这里插入图片描述

组合框类型

在这里插入图片描述

下拉框操作

请添加图片描述

void CDemoEditDlg::OnBnClickedButton1()
{
	CComboBox* m_pcombBox = (CComboBox*)GetDlgItem(IDC_COMBO2);//获取combBox
	//m_pcombBox->DeleteString(0);//删除
	CString str;
	//m_pcombBox->GetLBText(2, str);//获取文本
	//MessageBox(str);
	m_pcombBox->GetWindowText(str);//获取顶层文本
	MessageBox(str);
}

CListBox

插入数据

	CListBox* listbox = (CListBox*)GetDlgItem(IDC_LIST1);
	listbox->InsertString(0, L"中国");
	listbox->InsertString(0, L"美国");
	listbox->InsertString(0, L"俄罗斯");

获取当前选中

请添加图片描述

void CDemoEditDlg::OnBnClickedButton2()
{
	CString str;
	CListBox* listbox = (CListBox*)GetDlgItem(IDC_LIST1);
	//listbox->GetSel(0);//返回选中的状态
	int nSel = listbox->GetCurSel();
	listbox->GetText(nSel,str);
	MessageBox(str);
}

CListCtrl

插入数据

	CListCtrl* listctrl= (CListCtrl*)GetDlgItem(IDC_LIST2);
	listctrl->InsertItem(0, L"中国");
	listctrl->InsertItem(0, L"美国");
	listctrl->InsertItem(0, L"俄罗斯");

在这里插入图片描述

改变样式风格

在这里插入图片描述

设置表头

在这里插入图片描述

总是选中

在这里插入图片描述

	CListCtrl* listctrl= (CListCtrl*)GetDlgItem(IDC_LIST2);

	listctrl->SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//设置拓展风格,整行选,获得网格线
	listctrl->InsertColumn(0, L"国家", LVCFMT_LEFT,100);
	listctrl->InsertColumn(1, L"民族", LVCFMT_CENTER, 100);
	listctrl->InsertColumn(2, L"省份", LVCFMT_RIGHT, 100);

	listctrl->InsertItem(0, L"中国");
	listctrl->SetItemText(0, 1, L"汉");
	listctrl->SetItemText(0, 2, L"浙江");
	listctrl->InsertItem(0, L"美国");
	listctrl->InsertItem(0, L"俄罗斯");

在这里插入图片描述

修改

void CDemoEditDlg::OnBnClickedButton3()
{
	CListCtrl* listctrl = (CListCtrl*)GetDlgItem(IDC_LIST2);
	//获取数据信息
	int nCount = listctrl->GetItemCount();
	//获取选中的行数
	int nSel=listctrl->GetSelectionMark();

	if (nSel == -1)
	{
		MessageBox(L"没选中");
		return;
	}

	//获取选中的内容
	//CString str1=listctrl->GetItemText(nSel, 0);
	//MessageBox(str1);
	listctrl->SetItemText(nSel, 2, L"江西");//修改![请添加图片描述](https://img-blog.csdnimg.cn/36875e64c0074bf4b2b41295ce868c26.gif)

}

删除

void CDemoEditDlg::OnBnClickedButton4()
{
	CListCtrl* listctrl = (CListCtrl*)GetDlgItem(IDC_LIST2);
	//删除
	POSITION pos = listctrl->GetFirstSelectedItemPosition();
	int nSel = listctrl->GetNextSelectedItem(pos);
	listctrl->DeleteItem(nSel);//删除
}

请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值