MFC窗口创建机制

小时不理解老人晒太阳,一坐就是半天,长大了才明白:目之所及,皆是回忆,心之所想,皆是过往,眼之所看,皆是遗憾。。。

----  网易云热评

一、重写父类的成员虚函数

1、在应用程序框架中声明虚函数InitApplication()

class CMyWinApp : public CWinApp{public:    CMyWinApp();    virtual BOOL InitInstance();    virtual BOOL InitApplication();    virtual int Run();    virtual BOOL OnIdle(LONG ICount);    virtual int ExitInstance();};

2、重写该方法

int CMyWinApp::ExitInstance(){    AfxMessageBox("善后处理");    return CWinApp::ExitInstance();}BOOL CMyWinApp::OnIdle(LONG ICount){    //AfxMessageBox("空闲处理");//死循环    return CWinApp::OnIdle(ICount);}int CMyWinApp::Run(){    CWinApp::Run();    AfxMessageBox("消息循环");    return 0;}BOOL CMyWinApp::InitApplication(){    AfxMessageBox("初始化");    return CWinApp::InitApplication();}

运行结果:

先弹窗初始化,再弹窗善后处理,再弹窗消息新欢

 

二、窗口创建

BOOL CMyWinApp::InitInstance(){//此函数中的this为&theApp    CMyFrameWnd* pFrame = new CMyFrameWnd;    pFrame->Create(NULL, "测试");    this->m_pMainWnd = pFrame;    //pFrame->ShowWindow(SW_SHOW);//相当于下面的语句    ::ShowWindow(pFrame->m_hWnd, SW_SHOW);    //pFrame->UpdateWindow();相当于下面的语句    ::UpdateWindow(pFrame->m_hWnd);    return TRUE;}

运行结果:

 

三、创建窗口处理函数

class CMyFrameWnd : public CFrameWnd{public:    virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); //声明虚函数};//实现虚函数LRESULT CMyFrameWnd::WindowProc(    UINT message, WPARAM wParam, LPARAM lParam){//此函数的this为pFrame    switch (message) {    case WM_CREATE:        AfxMessageBox("WM_CREATE消息被处理");        break;    case WM_PAINT:    {        PAINTSTRUCT ps = { 0 };        HDC hdc = ::BeginPaint(this->m_hWnd, &ps);        ::TextOut(hdc, 100, 100, "hello", 5);        ::EndPaint(this->m_hWnd, &ps);    }        }    return CFrameWnd::WindowProc(message, wParam, lParam);}

运行结果:

四、跟随鼠标移动,鼠标到那,创建的窗口到那

关键代码

class CMyFrameWnd : public CFrameWnd{public:    virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);    int m_x;    int m_y;};case WM_MOUSEMOVE:    {        m_x = LOWORD(lParam);//wParam传递的是否按左键右键ctrl等键        m_y = HIWORD(lParam);        ::InvalidateRect(this->m_hWnd, NULL, TRUE);//重画    }

 

欢迎关注公众号:顺便编点程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

web安全工具库

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

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

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

打赏作者

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

抵扣说明:

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

余额充值