Window编程笔记(5)->从Win32过渡到MFC工程

#include<afxwin.h> //MFC中的核心头文件、不需要添加Windows.h头文件。

//MFC: Microsoft Foundation Classes (微软基础类库)

C++类的形式,更方便的开发程序,把功能相近的一些Windows API函数、模块,一类的形式进行封装、统一管理:
好处:可以重用、代码数据更加严谨、提供程序员的开发效率。

MFC的发展:
缺点:想要去做好,非常漂亮的软件,耗时,耗力。

esayX: 它的封装,不是特别合理,没有以面向对象的思维来开发,个人开发,
轻巧duilib: 开源的,
Qt: C++类库,非常全面,非常丰富,提供的界面设计,非常方便
自己开发属于自己的界面库。

为什么还要去学习MFC: 可学习之处。

//MFC程序三部曲
1、建立CWinApp的派生类
2、重写InitInstance虚函数
3、定义CWinApp派生的全局对象

#include<afxwin.h>  
#include"resource.h"
//对话框光联类,每一个类,光联一个对话框资源

Class CMainDlg::public CDialog
{
private:
      HICON m_hIcon;  //成员变量,图标句柄
public:
    enum{IDD=IDD_MAIN_DLG}; //枚举,自己新建的对话框的属性名字
public:
CMainDlg(): CDialog(IDD_MAIN_DLG){}

//对话框初始化函数    //对话框生成了,只不过还没有显示而已
virtual BOOL OnInitDialog() //WM_INITDIALOG消息,类向导->重写虚函数
{
//设置对话框窗口标题
//::SetWindowText();
SetWindowText(L"我是小陈同学");
//修改程序的图标
//加载图标 hInstance
//MFC中如何获取实例句柄:
//1.AfxGetInstanceHandle();
//2.AfxGetApp()->m_hInstance;
//3.m_hIcon=AfxGetApp()->LoadIcon(IDI_CON1); 

//1.m_hIcon=::LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));
//2.m_hIcon=::LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON1));

m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);//IDI_CON1需要在vs2003编辑器添加图标.ico

SetIcon(m_hIcon,TRUE); //小图标
SetIcon(m_hIcon,FALSE); //大图标

//MFC基本的一些数据类型,先弹出Afx对话框,弹出一个静态对话框
//一.字符串 CString
//C++ string
//CString str=L"这是第一个表达方式";
//AfxMessageBox(str);

//CString str1("这是第二个表达方式");
//AfxMessageBox(str1);

CString str2="Hello World";
//CString str2="我是中国人";
//CString str2;

int nlength=str.GetLength();//字符串中字符的个数
str2.Empty();//把str2里面的字符串清空
if(str2.IsEmpty()==TRUE)
{
//弹出对话框有两种表达方式
//第一种用: AfxMessageBox();
AfxMessageBox(L"程序异常");
//第二种用: ::MessageBox();
::MessageBox(NULL,L"程序异常",L"提示",MB_OK);
EndDialog(IDCANCEL);
}
else
{
::MessageBox(NULL,L"确定开启应用程序?",L"提示",MB_OK);
}
//wchar_t ch=str2.GetAt(2);
//wchar_t ch=str2.str2[2];

//修改字符,从第0个下标修改
//str2.SetAt(0,L'w');
//AfxMessageBox(str2);

//连接起来,str2的字符串+str5的L宽字符"->123",+=也是连接操作
CString str5=str2+L"->123";
str5+="456";
AfxMessageBox(str5);

//字符串截取:HelloWorld
//CString str3=str2.Mid(2,3);
//CString str3=str2.Left(5);
//CString str3=str2.Right(5);
//AfxMessageBox(str3);

//字符串大小写变换:小写变大写HelloWorld->HELLOWORLD=MakeUpper
//CString str3=str2.MakeUpper();
//大写变小写
//CString str3=str2.MakeLower();
//AfxMessageBox(str3);

//替换:1.把自身替换,每次做替换或者做其他功能时要弹一下方框
//str2.Replace(L"Hello",L"123");
//str2.Replace(L"1",L"0");:2.把当个字符替换:
//AfxMessageBox(str2);

//插入
//str2.Insert(2,'3');//从第二个单词插入一个3;
//AfxMessageBox(str2);

//删除
//str2.Delete(2,3);
//AfxMessageBox(str2);

//格式化
//int year=2020;
//int month=4;
//int day=20;
//CString str3;
//str3.Format(L"%d年%d月%d日 %s",year,month,day,L"22:00:00");

//CString str3 = L"C:\\Users\\Administrator\\Desktop\\FirstMFC\\FirstMFC\\res\\test.exe";
		//str3 = str3.TrimLeft();
		//str3 = str3.TrimRight();
		//int pos=str3.Find('i',7);
		//int pos=str3.ReverseFind('\\');//显示最后一个\\后面的内容
		//if(pos!=-1)
		//{
		//str3=str3.Mid(pos+1);
        //}
        //AfxMessageBox(str3);
       //wchar_t arr[100];
       //wcscpy(arr,str3.GetBuffer());

//CPoint类 点
//POINT CPoint
//获取鼠标当前的坐标位置
//CPoint pt;
//GetCursorPos(&pt);
//CString str;
//str.Format(L"当前鼠标坐标:%d,%d,",pt.x,pt.y);
//AfxMessageBox(str);
//pt.Offset(-200,300);

//CSize 类大小
//CSize size(600,400);

//四。CRect 类 区域
//RECT 左,上,右和下四个符号
CRect rect(10,10,300,200);
int nwidth=rect.Width();
int nheight=rect.Height();

//IsRectEmpty
//两点 一条线,空区域

//IsRectNull 四个值,全为0

//rect.InflateRect(10,10);下,右各加10,上,左各减10, 0,210,0,310;
rect.DeflateRect(10,10);//上,左各加10,下,右各减10, 20,190,20,290;

//矩形正常化
CRect rect2(300,200,10,10);
rect.NormalizeRect();

//五。时间 CTime 类
CTime time=CTime::GetCurrentTime();
//第一个表达方式
//int nyear=time.GetYear();
//int nmonth=time.GetMonth();
//int nday=time.GetDay();
//int nminte=time.GetMinute();
//int nsecond=time.GetSecond();
//int ndayofweek=time.GetDayOfWeek();
//CString str4;
//str4.Format(L"当前时间:%d-%d-%d %d:%d:%d 星期%d",nyear,nmonth,nday,nminte,nsecond,ndayofweek);

//第二个表达方式
CString str4=time.Format(L"当前时间:%Y:%m:%d %H:%M:%S");
SetWindowText(str4);
return TRUE;
}
DECLARE_MESSAGE_MAP()
//控件响应
afx_msg void OnBnClicedOK();//双击按钮对话框控件,自动添加这段代码
};
//关联类
class CMyApp:public CWinApp
{
public:
     //构造函数和析构函数可写可不写
     CMyApp(){}
     ~CMyApp(){}
     //看做是入口函数,MFC的所有代码都从这里开始
     //InitInstance: MFC的初始化过程,启动管理
     //目的:InitInstance->为了初始化应用程序,虚函数
  virtual BOOL InitInstance()
  {
//MessageBox:Window API
//:: 如果::的前面是没有类名来修饰,那么,表示调用的是全局函数,Windows API
//MFC里面的函数和Windows API里面的函数名字都是一样的
//::MessageBox(NULL,L"这是MFC程序",L"提示",MB_OK);

//AFX这个前缀,Application Framework,一个团队的名字
//Application Framework 技术团队
//凡是Afx开头的函数,都表示全局函数,都能再MFC工程中使用

//AfxMessageBox(L"这是我的一个MFC程序");
 
//第一个方法:CDialog dlg(IDD_MAIN_DLG);
//dlg.DoModal(); //弹出一个静态对话框
//第二个方法:
CMainDlg dlg; //弹出一个静态对话框
return TRUE;//TURE:表示初始化成功,返回FALSE表示关闭应用程序
//第一个对话框窗口

}
//负责清理操作,可写可不写
int ExitInstance()
{
return CWinApp::ExitInstance();
}
};
CMyApp theApp;
//WinMain函数无需再写,MFC已经在内部实现了WinMain函数了.
//int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR ipCmdLine,int nCmdshow)
//{
//MessageBox(NULL,L"这是Win32程序",L"提示",MB_OK);
//return 0;
//}BEGIN_MESSAGE_MAP(CMainDlg,CDialog)
//END_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CMainDlg,CDialog)
ON_BN_CLICKED(IDOK,&CMainDlg::OnBnClickedOK)
END_MESSAGE_MAP()

//点击按钮关闭程序
void CMainDlg::OnBnClickedOK()
{
//CDialog::OnOK();
if(IDOK!=NULL)
{
::MessageBox(NULL,L"点击确定按钮",L"提示",MB_OK);
}
else
{
EndDialog(IDCANCEL);
}
}

程序运行如图所示:
运行源代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿雨落轻尘丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值