自己动手封装SDK界面库
来源:互联网 发布:linux服务器搭建云盘 编辑:程序博客网 时间:2024/05/17 23:12
更新了整个库的结构,最近在看Effective C++ Second Edition。收获很多,结构上根据新的心得体会,改进的整体框架。
目前的类层次结构为: CKWnd
| | |
CTabCtrl CListCtrl Combobox
更改类层次结构后的库:http://download.csdn.net/source/739079
Sample范例,包括了dll,lib,头文件和一个应用使用这套库的简单程序(一个用KWnd界面库写的HOOK MessageBoxA,的小DEMO)
让MFC见鬼去吧,我们只需要C++基本组件就能跑的应用程序。
花了2天时间,搞了个自己的界面库,封装了大部分的WIN SDK,就象MFC那样使用,可以继承基类CKwnd,通过BEGIN_MSG_MAP来使用消息映射。当然,因为刚开始,功能不太多,只封装了一个基本CKWnd和CTabCtrl。
有兴趣的可以大家一起交流下我的QQ 5192747
消息映射如下所示:
class KWNDLIB_API CTabCtrlWnd : public CKWnd{public:CTabCtrlWnd();virtual ~CTabCtrlWnd();public:virtual BOOL InsertTab(INT iIndex, LPCTSTR szTabName, CKWnd* pSheetFormView);protected:std::map<INT, DWORD>m_TabMap;CKWnd*m_pCurTabSheet;protected:virtual void SetTabSheetPosiont(INT iIndex,CKWnd* pSheetFormView);virtual void SwitchTabSheet(INT iIndex);virtual void OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);BEGIN_MSG_MAPMESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp);END_MSG_MAP};
bHandled如果赋为TRUE,本消息将不发送给Windows默认消息处理函数处理。如果为FALSE,则发送。
-------------------------------------------------------------------------------------------------------------------------------------------------------
Sample代码摘抄
Stdafx.h--------------------------------------------------------------------------------------------------
#include "KWndLib/KWndInit.h"#include "KWndLib/KWnd.h"#include "KWndLib/TabCtrlWnd.h"#include "KWndLib/App.h"#pragma comment(lib,"KWndLib/KWndLib.lib")
WinMain.cpp--------------------------------------------------------------------------------------------
- #include "MainFrame.h"
- #include "mssapp.h"
- int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
- {
- InitCommonControls();
- CMssApp app;
- GetApp()->AppInit(hInstance);
- CMainFrame *pMainFrame;
- pMainFrame = new CMainFrame();
- GetApp()->SetMainFrame(pMainFrame);
- pMainFrame->CreateKWindow((LPCTSTR)IDD_MAINFRAME,Postion_CenterScreen);
- GetApp()->Run((LPCTSTR)IDC_MEMORYSNAPSHOT);
- return 0;
- }
MainFrame.h-----------------------------------------------------------------------------------------------------------
#include "MemoryFormView.h"#include "ProcessFormView.h"class CMainFrame : public CKWnd{public:CMainFrame();virtual ~CMainFrame();protected:virtual BOOL OnInit();virtual BOOL OnClose();protected:CTabCtrlWndm_TabCtrl;CProcessFormViewm_ProcessFormView;CMemoryFormViewm_MemoryFormView;};
MainFrame.cpp--------------------------------------------------------------------------------------------------------
#include "stdafx.h"#include "MainFrame.h"#include "resource.h"CMainFrame::CMainFrame():CKWnd(){}CMainFrame::~CMainFrame(){}BOOL CMainFrame::OnInit(){CKWnd::OnInit();m_TabCtrl.BindWindow(::GetDlgItem(GetHandle(),IDC_TABCTRL));m_ProcessFormView.CreateKWindow((LPCTSTR)IDD_FORMVIEW,Postion_Default,m_TabCtrl.GetHandle(),SW_HIDE);m_MemoryFormView.CreateKWindow((LPCTSTR)IDD_FORMVIEW1,Postion_Default,m_TabCtrl.GetHandle(),SW_HIDE);m_TabCtrl.InsertTab(0,_T("Process"), &m_ProcessFormView);m_TabCtrl.InsertTab(1,_T("Memory"), &m_MemoryFormView);return FALSE;}BOOL CMainFrame::OnClose(){if(::MessageBox(GetHandle(),"是否关闭本程序?","关闭",MB_ICONWARNING | MB_YESNO) == IDNO)return TRUE;return FALSE;}
A-KIM 2008-07-09
- 自己动手封装SDK界面库
- 自己动手封装VxWorks下C++基础库
- 自己动手封装AJAX类
- 自己动手封装一个string类
- 自己动手制作WinXP登录界面
- 自己动手做漂亮的界面
- iOS 使用静态库封装sdk
- 自己动手编译最新Android源码及SDK
- 自己动手编译最新Android源码及SDK
- 自己动手编译最新Android源码及SDK
- 自己动手编译最新Android源码及SDK
- 自己动手编译最新Android源码及SDK
- 自己动手写ORM框架(二):AdoHelper支持多数据库操作的封装(1)
- 自己动手写ORM框架(二):AdoHelper支持多数据库操作的封装(2)
- 自己动手写一个 iOS 网络请求库——封装接口
- 自己动手封装VxWorks下C++基础类
- 自己动手封装WinCE下的Filter
- 封装SDK和Framework
- RPF机制,PIM-DM工作机制,PIM-SM工作机制
- 报文摘要
- oracle-rac
- petshop4.0数据库分析一:数据库概览
- Infopath2007开发相关资源
- 自己动手封装SDK界面库
- 『转』水晶报表初识
- 『转』水晶报表初识
- 用虚拟机在FC6下安装VMware tools心得
- Tapestry学习四:Using Page Activation Context
- 我写的一批处理文件
- zx
- 整理---优化数据库的思想及SQL语句优化的原则
- Asp.net配置工具正常运行的心得