版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_46202128/article/details/107718683
【MFC】学习MFCday1 vs2019 准备&从空项目开始创建MFC窗体程序
上一篇
下一篇
1、首先是安装MFC类库这个就不多说了
2、安装好后创建MFC应用项目
3、准备
这里有多的.h和.cpp文件我已经移除(毕竟是要从空项目开始),然后创建MyMain.h和MyMain.cpp。(注意:pch.h pch.cpp framework.h 等文件需要保留)
这些宏和消息处理函数可以在VC++之MFC类库中文手册.chm中查到,当然也可以自行百度。
//消息宏
ON_WM_LBUTTONDOWN()//鼠标左键按下
ON_WM_CHAR()//键盘键按下
ON_WM_PAINT()//绘图
//消息映射 消息处理函数原型
afx_msg void OnLButtonDown(UINT, CPoint);//鼠标左键按下
afx_msg void OnChar(UINT, UINT, UINT);//键盘按下
afx_msg void OnPaint();//绘图
以下将展示代码了
MyMain.h文件的内容
//MyMain.h
#include"pch.h"
#include<afxwin.h>
class MyMFCApp:public CWinApp
{
public:
virtual BOOL InitInstance();
private:
};
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();//绘图
private:
};
MyMain.cpp文件的内容
#include "pch.h"
#include "MyMain.h"
MyMFCApp app;//全局应用程序对象,有且仅有一个
BOOL MyMFCApp::InitInstance()//
{
//创建窗口
MyFrame* frame = new MyFrame();
//显示和更新
frame->ShowWindow(SW_NORMAL);
frame->UpdateData();
m_pMainWnd = frame;/*保存指向应用程序的主窗口的指针
m_pMainWnd在axfwin.h中已经声明;*/
return TRUE;//返回正常初始化
}
//分界宏
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)
//消息宏
ON_WM_LBUTTONDOWN()//鼠标左键按下
ON_WM_CHAR()//键盘键按下
ON_WM_PAINT()//绘图
END_MESSAGE_MAP()
MyFrame::MyFrame()
{
Create(NULL, TEXT("MyMFCApp1"));//详细参数可在VC++MFC类库中文手册中查到
//参数2代表窗口标题
}
void MyFrame::OnLButtonDown(UINT, CPoint point)
{
CString str;
str.Format(TEXT("点击坐标\(%d,%d\)"), point.x, point.y);
MessageBoxEx(this->m_hWnd, str, TEXT("消息"), MB_OK, NULL);
}
void MyFrame::OnChar(UINT key, UINT nRepCnt, UINT nFlags)
{
CString str;
str.Format(TEXT("按下%c键,键值%d"), key,key);
MessageBox(str);
}
void MyFrame::OnPaint()
{
CPaintDC dc(this);//设备上下文对象,通俗点就是绘画对象
//dc.FillSolidRect(10, 10, 100, 100,RGB(150,255,0));
char* p1 = "ok";
//char* 转 CString
CString str1=CString(p1);
//CString 转char*
CStringA str1A=static_cast<CStringA>(str1);/*先转成CStringA
static_cast<CStringA>(str1)相当于C语言中的(CStringA)str1*/
char* p2 = str1A.GetBuffer();//再通过GetBuffer()转成char*
//TEXE()做了自适应编码的转换
dc.TextOutW(10, 50, CString(p2));
}
代码编译执行后的效果图:
下一篇
附加:
VC++之MFC类库中文手册.chm
点击下载项目文件(GitHub)