windows程序设计再认识

2020.02.03

昨天和前天,基本完成了对windows程序设计的基础认识,并且也写了一些在windows程序设计里面十分简单的代码。今天……继续学习!!!

上一篇文章里面,直接用API函数进行windows程序设计,我简直成为了抄代码的机器,一言难尽。
所以为了化简windows程序设计,方便你我他。就出现了用面向对象程序设计的方式,把API函数包装成了几百个类。
把零散的函数包装为类,显而易见,不论代码行数有不有减少,至少在我们学习上更加的有条理性。
接下来主要就学习两个最重要的类:CWInAPPCFrameWnd
还是一段代码


#include <afxwin.h>
class CMyApp :public CWinApp
{
public:
	virtual BOOL InitInstance();
};
class CMainWindow :public CFrameWnd
{
public:
	CMainWindow();
protected:
	afx_msg void OnPaint();
	DECLARE_MESSAGE_MAP()//声明消息映射
};

CMyApp app;
BOOL CMyApp::InitInstance()
{
	this->m_pMainWnd = new CMainWindow;
	this->m_pMainWnd->ShowWindow(this->m_nCmdShow);
	this->m_pMainWnd->UpdateWindow();
	
	//system("pause");
	return 0;
}
BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)//开始消息映射
	ON_WM_PAINT()
END_MESSAGE_MAP()
CMainWindow::CMainWindow()
{
	this->Create(NULL, TEXT("Hello,WIndows!"), WS_OVERLAPPEDWINDOW | WS_VSCROLL, CRect(100, 100, 380, 300));

}
void CMainWindow::OnPaint()//处理绘制消息
{
	CPaintDC dc(this);//DC对象
	CRect rect;
	this->GetClientRect(&rect);
	dc.DrawText(TEXT("Hello Windows!"), -1, &rect, DT_SINGLELINE |                     DT_CENTER | BS_VCENTER);

}

运行的结果

因为自己看的教程有一些年纪了,所以当自己写了和老师基本一样的代码运行后,发现了我的窗口竟然闪退!找资料的结果是自己还是没有解决。于是乎,容我后面来解决吧……

接下来,我在讲一讲自己这几天从老师哪里学到的关于windows编程的一些理论知识!

首先,我们要知道的是学习windows编程,是因为我们绝大多数人用的系统是微软的。那么Windows编程就是微软里面的一群人编写的,一套基于C语言的,函数总成。也就是著名的API函数。说实话,这些函数背起来真的有一些困难。故而后面又用面向对象的设计思想吧API函数包装成了几百个类。
在者,windows设计里面,窗口是一切的基础。我们看到的一切都是窗口。
最后,就是我们消息处理机制,如下图:

posted @ 2020-02-04 21:54  lisui  阅读(119)  评论(0编辑  收藏  举报