【MFC】学习MFCday1 vs2019 准备&从空项目开始创建MFC窗体程序

【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)

猜你喜欢

转载自blog.csdn.net/m0_46202128/article/details/107718683