zoukankan      html  css  js  c++  java
  • WIN32 窗口类封装 框架实现部分

    上面已经讲了窗口封装部分,内容可点击:http://www.cnblogs.com/mengdejun/p/4010320.html,下面分享框架部分内容,完成WINDOWS消息迭代

    CQFrameWnd.h 框架部分定义

    // MainFrameWnd.h: interface for the CMainFrameWnd class.
    //
    //////////////////////////////////////////////////////////////////////
    
    #if !defined(AFX_MAINFRAMEWND_H__F8E32324_0D71_4EEA_9B91_76CA47D6423F__INCLUDED_)
    #define AFX_MAINFRAMEWND_H__F8E32324_0D71_4EEA_9B91_76CA47D6423F__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    #include "QWnd.h"
    #include "qbutton.h"
    
    class CQFrameWnd : public CQWnd{
        QWND_DECLARE_MESSAGE_MAP(CQFrameWnd)
    public:
        CQFrameWnd();
        virtual ~CQFrameWnd();
        BOOL OnLButtonDown(UINT uMsg,WPARAM wParam,LPARAM lParam);
        BOOL OnRButtonDown(UINT uMsg,WPARAM wParam,LPARAM lParam);
        virtual HRESULT OnCreate(UINT uMsg,WPARAM wParam, LPARAM lParam);
        virtual HRESULT OnNcCreate(UINT uMsg,WPARAM wParam, LPARAM lParam);
    public:
        CQButton m_btn;
    };
    
    #endif // !defined(AFX_MAINFRAMEWND_H__F8E32324_0D71_4EEA_9B91_76CA47D6423F__INCLUDED_)

    CQFrameWnd.cpp 框架部分实现

    // QWApp.cpp: implementation of the CQWApp class.
    //
    //////////////////////////////////////////////////////////////////////
    
    #include "stdafx.h"
    #include "QWApp.h"
    
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
    
    CQWApp::CQWApp()
    {
    
    }
    
    CQWApp::~CQWApp()
    {
    
    }
    
    BOOL CQWApp::InitInstance()
    {
        return TRUE;
    }
    
    BOOL CQWApp::ExitInstance()
    {
        return TRUE;
    }
    
    BOOL CQWApp::Run(){
        MSG msg;
        while(GetMessage(&msg,NULL,0,0)){ 
            //从消息队列中取得消息
            TranslateMessage(&msg);
            //检索并生成字符消息WM_CHAR
            DispatchMessage(&msg);
            //将消息发送给相应的窗口函数
        }
        return TRUE;
    }

     实现及其调用过程

    // HelloApp.h: interface for the CHelloApp class.
    //
    //////////////////////////////////////////////////////////////////////
    
    #if !defined(AFX_HELLOAPP_H__53E2DA06_2C68_41AD_AF58_3A9111E27DB7__INCLUDED_)
    #define AFX_HELLOAPP_H__53E2DA06_2C68_41AD_AF58_3A9111E27DB7__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    #include "QWApp.h"
    
    class CHelloApp : public CQWApp  
    {
    public:
        CHelloApp();
        virtual ~CHelloApp();
        virtual BOOL ExitInstance();
        virtual BOOL InitInstance();
    
    };
    #endif // !defined(AFX_HELLOAPP_H__53E2DA06_2C68_41AD_AF58_3A9111E27DB7__INCLUDED_)
    // HelloApp.cpp: implementation of the CHelloApp class.
    //
    //////////////////////////////////////////////////////////////////////
    
    #include "stdafx.h"
    #include "HelloApp.h"
    #include "QFrameWnd.h"
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
    
    CHelloApp::CHelloApp(){
    }
    
    CHelloApp::~CHelloApp(){
    }
    
    
    BOOL CHelloApp::ExitInstance(){
        if(m_pMainWnd)
            delete m_pMainWnd;
        return TRUE;
    }
    
    BOOL CHelloApp::InitInstance(){
        CQFrameWnd* pW=new CQFrameWnd;
        if(pW->CreateEx(0,TEXT("test c++ frame"),TEXT("Visual Keyboard"),WS_OVERLAPPEDWINDOW|WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,(HINSTANCE)GetModuleHandle(NULL))){
            m_pMainWnd=(LPVOID)pW;
            pW->UpdateWindow();
            pW->ShowWindow(SW_SHOWNORMAL);
            return TRUE;
        }
        return FALSE;
    }
    #include "stdafx.h"
    #include "HelloApp.h"
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
        CHelloApp app;
        if(app.InitInstance()){
            app.Run();
            app.ExitInstance();
        }
        return 0;
    }

    windows开发框架

    动态链接库版本:http://files.cnblogs.com/mengdejun/wd.zip

    1.0.0.3修复版本:http://files.cnblogs.com/mengdejun/wd.fix.zip

  • 相关阅读:
    Java——Java重写和重载
    Java——继承
    Java——Java异常(不完整)
    Java——Stream、File、IO
    前端规范整理
    网站前端优化 -saveForSelf
    PhoneGap与WAP站静态化
    js执行顺序
    前端优化-内容优化-郑钧
    HTTP协议-标签简介
  • 原文地址:https://www.cnblogs.com/mengdejun/p/4013132.html
Copyright © 2011-2022 走看看