windows第四章 初识MFC
MFC简介
创建MFC项目
- 配置项目属性
2.写代码三步曲
- 创建CWinApp派生类
- 重写InitInstance函数
- 创建窗口对象
#include <afxwin.h>
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance()//这是Mfc的入口函数,为应用程序初始化
{
MessageBox(NULL, L"Hello World!", L"FirstMFC", MB_OK);
//弹出一个对话框
return TRUE; //返回FALSE,关闭应用程序,返回TRUE,让应用程序继续运行
}
virtual int ExitInstance() //执行退出,清理工作
{
return CWinApp::ExitInstance();
}
};
CMyApp theApp; //应用程序核心对象,一个MFC应用程序有且只有一个应用程序核心对象
这里不要写构造函数,不然会报错
第一个对话框窗口
改成多文件格式
stdafx.h
#include <afxwin.h>
#include "resource.h"
CMyDlg.h
#pragma once
#include "stdafx.h"
class CMyDlg : public CDialog {
public:
CMyDlg();
BOOL OnInitDialog(); // 初始化对话框
private:
HICON m_hIcon;
};
CMyDlg.cpp
#include "CMyDlg.h"
#include "FirstMFC.h"
extern CmyApp theApp;
CMyDlg::CMyDlg()
: CDialog(IDD_DIALOG_MAIN)
{
//加载图标
//第一种方式
m_hIcon = ::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON_MAIN
));//::表示调用全局函数,也就是windowsAPI函数,而不是CWinApp的成员函数
//第二种方式
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON_MAIN);
//第三种方式
m_hIcon = ::LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON_MAIN));
//第四种方式
m_hIcon = theApp.LoadIcon(IDI_ICON_MAIN);
}
BOOL CMyDlg::OnInitDialog()
{
SetWindowText(L"Hello World!");//设置窗口标题
SetIcon(m_hIcon, TRUE);//设置大图标
SetIcon(m_hIcon, FALSE);//设置小图标
return TRUE;
}
FirstMFC.h
#pragma once
#include "stdafx.h"
class CmyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
};
FristMFC.cpp
#include "stdafx.h"
#include "FirstMFC.h"
#include "CMyDlg.h"
//三步曲
//1.创建CWinApp派生类
//2.重写InitInstance函数
//3.创建窗口对象
BOOL CmyApp::InitInstance() {
/*MessageBox(NULL, L"Hello World!", L"FirstMFC", MB_OK);*/
// 弹出一个对话框
CMyDlg dlg;
dlg.DoModal(); // 弹出一个模态对话框
return TRUE; // 返回FALSE,关闭应用程序,返回TRUE,让应用程序继续运行
}
int CmyApp::ExitInstance() {
return CWinApp::ExitInstance();
}
CmyApp theApp;
MFC常用类介绍
CString
//定义字符串
CString str1 = L"Hello World!";
CString str2(L"你好,世界!");
CString str3 = str1 + str2;
CString str4;
str4.Format(L"Hello World!%d", 123);
MessageBox(str4);
//求字符个数,一个中文也是一个,和长度不一样
int n = str4.GetLength();
//判断是否为空
CString str5;
if (str5.IsEmpty())
{
MessageBox(L"str5 is empty");
}
str5 = L"123";
str5.Empty();//清空字符串
//获取字符
wchar_t c = str1.GetAt(0);
str5.Format(L"字符:%c", c);
MessageBox(str5);
c = str2.GetAt(2);
str5.Format(L"字符:%c", c);
MessageBox(str5);
c = str2[1];
str5.Format(L"字符:%c", c);
MessageBox(str5);
//设置字符
str3.SetAt(0, L'W');
//字符串拼接
str3 += L'结尾';
//字符串比较
if (str1 == str2)
{
MessageBox(L"相等");
}
str1 = L"Hello World!";
str2 = L"hello World!";
if (str1.CompareNoCase(str2) == 0)//忽略大小写比较
{
MessageBox(L"相等");
}
//字符串截取
str5 = str3.Left(5);//截取前5个字符
str5 = str3.Right(5);//截取后5个字符
str5 = str3.Mid(5, 5);//从第5个字符开始截取5个字符
//移除后缀
str1 = L"123.txt";
str1 = str1.Left(str1.ReverseFind(L'.'));//找到最后一个.,然后截取前面的部分
//去空格
str1 = L" 123 456 789 ";
str1.TrimLeft();//去掉左边的空格
str1.TrimRight();//去掉右边的空格
str1.Trim();//去掉两边的空格
//去掉所有空格
while (str1.Find(L' ') != -1)
{
str1.Delete(str1.Find(L' '), 1);
}
str1 = L"XXX 123 456 789 21111";
str1.TrimRight('1');//去掉所有右边的1
MessageBox(str1);
CPoint
//定义点
CPoint pt1;
pt1.x = 100;
pt1.y = 200;
CPoint pt2(300, 400);
CPoint pt3;
pt3 = pt1 + pt2;//加法
pt3 = pt1 - pt2;//减法
pt3.Offset(100, 200);//偏移
pt3 += pt2;//加法
pt3 -= pt2;//减法
//比较
if (pt1 == pt2)
{
MessageBox(L"相等");
}
CPoint pt4;
GetCursorPos(&pt4);//获取鼠标位置
CSzie
//定义CSzie
CSize sz1;
CSize sz2(100, 200);
CSize sz3;
sz3.cx = 300;
sz3.cy = 400;
sz3 = sz1 + sz2;//加法
sz3 = sz1 - sz2;//减法
CRect
//定义矩形
CRect rect1;
rect1.SetRect(100, 200, 300, 400);
CRect rect2(500, 600, 700, 800);
CRect rect3;
rect3 = rect1 + rect2;//左上角相减,右下角相加 {-400,-400,1000,1200}
rect3 = rect1 - CPoint(100, 200);//两个点减去(100,200) {0,0,200,200}
//判断是否为空
if (rect3.IsRectEmpty())//{0,0,0,0}或者{0,0,100,0}或者{100,0,0,0}都为空
{
MessageBox(L"rect3 is empty");
}
if (rect3.IsRectNull())//{0,0,0,0}
{
MessageBox(L"rect3 is null");
}
//偏移
rect3.OffsetRect(100, 200);//{100,200,300,400}
//缩放
rect3.InflateRect(10, 10);//向外扩展{90,190,310,410} 左上角-(10,10),右下角+(10,10)
rect3.DeflateRect(10, 10);//向内缩小{100,200,300,400} 左上角+(10,10),右下角-(10,10)
//正常化
rect3.SetRect(300, 200, 10, 20);
rect3.NormalizeRect();//{10,200,300,20} 左上角和右下角交换位置
//判断点是否在矩形内
if (rect3.PtInRect(pt1))
{
MessageBox(L"pt1在rect3内");
}
//判断矩形是否相交
if (rect3.IntersectRect(rect1, rect2))//判断rect1和rect2是否相交,如果相交,则将相交部分赋值给rect3
{
MessageBox(L"rect1和rect2相交,相交部分为rect3");
}
//获取屏幕坐标系
CRect rect4, rect5;
GetWindowRect(&rect4);//获取窗口在屏幕坐标系中的位置
GetClientRect(&rect5);//获取窗口在客户区坐标系中的位置
CTime
//定义时间
CTime t1;
CTime t2(2019, 10, 1, 12, 30, 0);
t1 = CTime::GetCurrentTime();//获取当前时间
CString str1 = t1.Format(L"当前时间:%Y-%m-%d %H:%M:%S");
SetWindowText(str1);
//获取星期
int n = t1.GetDayOfWeek();//1-7,1代表星期天,2代表星期一,以此类推
原文地址:https://blog.csdn.net/yerennuo/article/details/145115062
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!