当前位置: 首页 > news >正文

MFC控件按钮的使用

MFC窗口的创建/消息映射机制

mfc.h

#include<afxwin.h>//mfc头文件

//应用程序类
class MyApp:public CWinApp //继承于应用程序类
{
public:
	//程序入口
	virtual BOOL InitInstance();
};

//框架类
class MyFrame:public CFrameWnd
{
public:
	MyFrame();

	//声明宏 提供消息映射机制
	DECLARE_MESSAGE_MAP()

	afx_msg void OnLButtonDown( UINT, CPoint );

	afx_msg void OnChar( UINT, UINT,UINT ) ;

	afx_msg void OnPaint( );
};

mfc.cpp

#include "mfc.h"

MyApp app;//全局应用程序对象,有且仅有一个

BOOL MyApp::InitInstance()
{
	//创建窗口
	MyFrame * frame = new MyFrame;

	//显示和更新
	frame -> ShowWindow(SW_SHOWNORMAL);
	frame -> UpdateWindow();

	m_pMainWnd = frame;//保存指向应用程序的主窗口的指针

	return TRUE;//返回正常初始化
}

//分界宏
BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)
	ON_WM_LBUTTONDOWN()//鼠标左键按下

	ON_WM_CHAR()//键盘按下

	ON_WM_PAINT( )//绘图

END_MESSAGE_MAP()

MyFrame::MyFrame()
{
	Create(NULL,TEXT("mfc"));//窗口标题
}

//鼠标
void MyFrame::OnLButtonDown( UINT, CPoint point)
{
	/*TCHAR buf[1024];
	wsprintf(buf,TEXT("x=%d,y=%d"),point.x,point.y);

	MessageBox(buf);*/

	//mfc中的字符串 CString
	CString str;
	str.Format(TEXT("x=%d,.,y=%d"),point.x,point.y);
	MessageBox(str);


}

//键盘
void MyFrame::OnChar(UINT key, UINT,UINT)
{
	CString str;
	str.Format(TEXT("按下了%c键"),key);
	MessageBox(str);
}

//绘图
void MyFrame::OnPaint()
{
	CPaintDC dc(this);//CDC里找
	dc.TextOutW(100,100,TEXT("upup"));//画文字

	dc.Ellipse(10,10,100,100);//画椭圆

	//统计字符串长度
	int num=0;
	char *p ="aaaa";
	num=strlen(p);

	//统计宽字节的字符串长度
	wchar_t *p2=L"bbb";
	num = wcslen(p2);

	//char * 与 CString之间的转换
	//char * ->CString
	char *p3 = "ccc";
	CString str = CString(p3);
	//CString->char *
	CStringA temp;
	temp = str;
	char *pp = temp.GetBuffer(); 
}

复制按钮

//复制按钮
void CMy03EditCtrlDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	//获取到edit1的内容,然后给edit2赋值

	CString str;
	m_edit1.GetWindowTextW(str);
	m_edit2.SetWindowTextW(str);
}

退出按钮

//退出按钮
void CMy03EditCtrlDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码

	//exit(0);//退出程序

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

设置内容/获取内容(值)

 将控件内容同步到变量中updatedata(true)

void CMy03EditCtrl_2Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	//利用关value的方式 设置和改变edit的内容

	//设置内容
	m_text = TEXT("哈哈");

	//将变量内容同步到控件中
	UpdateData(FALSE);
}


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

	//将控件的内容同步到变量中
	UpdateData(TRUE);

	MessageBox(m_text);
}

下拉框

//下拉框的添加操作
	m_cbx.AddString(TEXT("唐僧"));
	m_cbx.AddString(TEXT("孙悟空"));
	m_cbx.AddString(TEXT("猪八戒"));

	//设置默认选择第一项
	m_cbx.SetCurSel(0);

	//插入
	m_cbx.InsertString(3,TEXT("白龙马"));

	//删除
	m_cbx.DeleteString(2);//从0开始的

	//获取1号的索引的具体内容
	CString str;
	m_cbx.GetLBText(1,str);
	MessageBox(str);


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

	//拿到索引位置,一有切换就会触发
	int index = m_cbx.GetCurSel();
	CString str;
	m_cbx.GetLBText(index,str);
	MessageBox(str);
}

相关文章:

  • 深入浅出消息队列 (MQ)
  • Java 断言(Assert)机制
  • pgAdmin 4汉化,设置界面为中文
  • 机器学习(七)
  • 太速科技-636-基于FMC的Kintex XCKU060高性能PCIe载板
  • LVI-SAM、VINS-Mono、LIO-SAM算法的阅读参考和m2dgr数据集上的复现(留作学习使用)
  • python广度优先搜索(BFS)算法
  • 16.使用读写包操作Excel文件:XlsxWriter 包
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(47)乾坤图演路径 - 欧拉路径(Hierholzer 算法)
  • 完善机器人:让 DeepSeek 使用Vue Element UI快速搭建 AI 交互页面
  • vue埋点
  • LinuX---进程线程类
  • DFS深度优先搜索
  • 完善机器人:让 DeepSeek 生成 API 接口,并在网页上调用
  • 浅谈数据分析及数据思维
  • Android/AOSP源码编译错误:TEMPORARY_DISABLE_PATH_RESTRICTIONS
  • Linux从零搭建Dify智能体平台(包含网络代理、docker安装、docker镜像地址设置)
  • flinkOracleCdc源码介绍
  • Java8的新特性
  • python如何获取三个小时之前的时间并输出
  • 孟夏韵评《无序的学科》丨误读与重构的文化漂流
  • 以军证实空袭也门多个港口
  • 上海:到2027年,实现近海航线及重点海域5G网络高质量覆盖
  • 遭车祸罹难的村医遇“身份”难题:镇卫生院否认劳动关系,家属上诉后二审将开庭
  • 澎湃与七猫联合启动百万奖金征文,赋能非虚构与现实题材创作
  • 俄乌代表团抵达谈判会场