上面已经讲了窗口封装部分,内容可点击: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,,)){
//从消息队列中取得消息
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(,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 ;
}
windows开发框架
动态链接库版本:http://files.cnblogs.com/mengdejun/wd.zip
1.0.0.3修复版本:http://files.cnblogs.com/mengdejun/wd.fix.zip