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

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(); 
}

相关文章:

  • Python 3.13实现数据未来预测功能(详细功能实现及环境搭建)
  • 前端性能优化指南
  • 414. 第三大的数
  • 在linux中查看/dev/shm容量及使用率
  • JavaScript基础篇:三、 变量与数据类型
  • IMA+DeepSeekR1+本地知识库撰写NOIP2008普及组T3【传球游戏】题解
  • vue3系列:vite+vue3怎么配置通过ip和端口打开浏览器
  • 什么是海外仓WMS系统?跟ERP系统有什么区别?
  • docker中安装Ghost报错Error: connect ECONNREFUSED 127.0.0.1:3306
  • 【机器人-基础知识】标定 - 相机内参求解原理(单应性矩阵、内参约束方程)
  • 【CF】Day6——Codeforces Round 942 (Div. 2) BC + Codeforces Round 941 (Div. 2) C
  • 《CircleCI:CircleCI:解锁软件开发持续集成(CI)和持续部署(CD)高效密码》:此文为AI自动生成
  • AdaLoRA 参数 配置:CAUSAL_LM“ 表示因果语言模型任务
  • python开发订单查询功能(flask+orm bee)
  • DeepSeek + Notion:知识管理管家
  • 用Embassy库编写的自动化下载程序
  • X86 RouterOS 7.18 设置笔记三:防火墙设置(IPV4)
  • 数据的存储---整型、浮点型
  • 数字化建设经营管理平台解决方案(34页PPT)(文末有下载方式)
  • 如何关闭和打开本地的mysql
  • LPR名副其实吗?如果有所偏离又该如何调整?
  • 专利申请全球领先!去年我国卫星导航与位置服务产值超5700亿
  • 一箭六星,朱雀二号改进型遥二运载火箭发射成功
  • 多个“首次”!上市公司重大资产重组新规落地
  • 张家界一铁路致17人身亡,又有15岁女孩殒命,已开始加装护栏
  • 中国恒大披露清盘进展:要求债权人提交债权证明表