windows程序设计再认识

lisui 2020-02-04 21:54:00
原文地址:https://www.cnblogs.com/kadcyh/p/12255803.html

2020.02.03

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

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


#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设计里面,窗口是一切的基础。我们看到的一切都是窗口。
最后,就是我们消息处理机制,如下图:
![]()

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。