上面已经讲了部分,内容可点击:,下面分享框架部分内容,完成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开发框架
动态链接库版本:
1.0.0.3修复版本: