SoftG Application Framework 1.62
自动化框架应用程序开发,实现软件功能与软件框架分离。支持插件,支持主题
引言
核心技术基于Microsoft COM技术。
简单介绍
- 新的软件,软件功能和软件框架设计分离
- COM技术 + WTL设计
- 自动化框架应用程序开发,支持,支持宏语言开发
- 支持插件设计
- 32位和64位版本
- 支持可定义主题,主题
- 内置多国语言包,包括语言切换
- UNICODE编程
- 内置程荣应用程序框架“向导,可以生成MFC ATL WTL项目应用程序
- 自动保存窗口坐标等功能
主框架
一个应用程序可以有多个主框架。每个主框架可以是单文档,单文档窗口网格,文档部分,文档窗口网格,点。框架有序集合,菜单栏和命令,组成,也可以添加点窗口或网格页面文档。主框架设置为IMainFrames
统一管理。
主框架窗口坐标自动记忆。
程荣应用程序框架的应用程序管理界面IArtApp
接口是程荣应用程序框架的管理器,并且是程序执行之前创建的第一个 接口。如果无法创建程荣应用程序框架,它将无法正常工作。
集合顺序
集合ICommandBars
接口命令。有IMenuBar
菜单栏和命令ICommandBar
组成。命令侧边栏,也称为命令。食物已成为菜单命令ICommandBar
栏,菜单项和有序的按钮,统称为命令接口名称为ICommandItem
: ICommandItem
接口可以更改顺序。
命令处理器
命令处理器INotifyCommand
接口,用户界面处理INotifyCommand
必须实现主框架,命令,菜单栏,弹出菜单命令。
主框架,命令,以及有序的命令INotifyCommand
可以拥有接口。
命令处理器集
命令处理器INotifyCommands
接口用于管理所有命令处理器。主框架,集合INotifyCommands
接口带有命令。
用户
- 下载SetupSoftGFramework.exe
- 安装...
- 注册类型库
- 安装向导到 Visual Studio 2005 或 Visual Studio 2008。
- 运行 Visual Studio 2005 或 Visual Studio 2008。
- 将“SoftG Frame\Include”添加到“Tools\Options\Projects and Solutions\VC++ Directories”
- 新建项目
- 点击“SoftG Frame”\"MFC Application”。输入项目名称“
MyProject
”。点击 OK。 - 根据指南项目
- 项目信息。
文件名 | 描述 |
MainCommand.cpp 或 MainCommand.h |
新的命令处理模式。 class CMainCommand :
public art::CNotifyCommandImpl<CMainCommand>
{
public:
void OnHelp(UINT nCmdID, art::ICommandItem *pCmdUI);
|
MyProject.cpp 或 MyProject.h |
class CMyProjectApp : public CWinApp,
public art::CArtApp
{
|
MyProjectDoc.cpp 或 MyProjectDoc.h |
class CMyProjectDoc : public CDocument
{
|
MyProjectView.cpp 或 MyProjectView.h |
class CMyProjectView :
public CView,
public art::CDataViewImpl<CMyProjectView>
{
|
Using the Code
- 初始化“程荣应用程序框架”环境
HRESULT hr = art::CArtApp::InitArtApp(); //Init IArtApp Interface.
- 创建主框架
调用
IArtApp
接口CreateMainFrame
方法创建主框架,并返回IMainFrame
到主框架添加接口,命令处理器INotifyCommand
接口。
通过IMainFrame
接口put_SDIDataView
属性,添加数据视图。bool CMyProjectApp::CreateSDIWindow() { CMainCommand mc; HRESULT hr = S_FALSE; HICON hIcon = (HICON)::LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); HMENU hMenu = ::LoadMenu(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME)); hr = GetArtApp()->CreateMainFrame(art::artMainFrameTypeSDI, (wireHMENU)hMenu, (long)hIcon, L"Window Name", &m_pMainFrame); if (S_OK == hr) { m_pMainFrame->AddNotifyCommand((art::INotifyCommand*)&mc); GetArtApp()->put_AppName(L"Software Name"); CreateTools(); CMyProjectView *pDocView = NULL; pDocView = new CMyProjectView(); m_pMainFrame->put_SDIDataView((art::IDataView*)pDocView); m_pMainFrame->ShowWindow(SW_SHOW); GetArtApp()->Run(); return true; } return false; }
- 创建
CommandBar
创建三个命令按钮
void CMyProjectApp::CreateTools() { ATLASSERT(NULL != m_pMainFrame); CComPtr<:icommandbars> pCommandBars; CComPtr<:icommandbar> pCommandBar; CComBSTR bstrTitile; #pragma warning(disable:4309) #pragma warning(disable:4305) TBBUTTON tbAdd[] = { {0, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON|TBSTYLE_TOOLTIPS, 0L, ID_FILE_NEW}, {0, 0, 0, TBSTYLE_SEP, 0L, 0}, {1, ID_FILE_CLOSE, TBSTATE_ENABLED, TBSTYLE_BUTTON|TBSTYLE_TOOLTIPS, 0L, ID_FILE_CLOSE}, {0, 0, 0, TBSTYLE_SEP, 0L, 0}, {2, ID_HELP, TBSTATE_ENABLED, TBSTYLE_BUTTON|TBSTYLE_TOOLTIPS, 0L, ID_HELP}, }; #pragma warning(default:4309) #pragma warning(default:4305) m_pMainFrame->get_CommandBars(&pCommandBars); bstrTitile = L"Standard"; pCommandBars->AddCommandBar(bstrTitile, 1, 16, 16, &pCommandBar); pCommandBar->InsertCommand(0, sizeof(tbAdd)/sizeof(tbAdd[0]), (BYTE*)&tbAdd); pCommandBar->SetImageList((long)AfxGetResourceHandle(), 16, 16, MAKEINTRESOURCEW(IDR_MAINFRAME)); }
- 命令处理
命令接收
INotifyCommand
接口。用户必须实现INotifyCommand
,根据方法填充方法 描述 QueryState(UINT nCmdID, ICommandItem *pCmdUI);
查询状态 NotifyCommand(UINT codeNotify, int nCmdID, ICommandItem *pCmdUI);
NotifyCommandPoint(UINT nCmdID, POINT *pt, ICommandItem *pCmdUI, IDispatch *ppmb);
GetCommandTips(UINT nCmdID, BSTR *bstrTips);
标准的完整屏幕方法。
获取命令提示。STDMETHODIMP ExpansionCommand (UINT nCmdID, ICommandItem *pCmdUI);
当调用命令时。 ICommandItem
接口virtual HRESULT __stdcall get_Caption (BSTR * pVal ); virtual HRESULT __stdcall put_Caption (BSTR pVal ); virtual HRESULT __stdcall get_Enable (VARIANT_BOOL * pVal ); virtual HRESULT __stdcall put_Enable (VARIANT_BOOL pVal ); virtual HRESULT __stdcall get_Check (VARIANT_BOOL * pVal ); virtual HRESULT __stdcall put_Check (VARIANT_BOOL pVal ); virtual HRESULT __stdcall get_Radio (VARIANT_BOOL * pVal ); virtual HRESULT __stdcall put_Radio (VARIANT_BOOL pVal ); virtual HRESULT __stdcall get_Visible (VARIANT_BOOL * pVal ); virtual HRESULT __stdcall put_Visible (VARIANT_BOOL pVal ); virtual HRESULT __stdcall get_Cmd (unsigned long * nCmdID ); virtual HRESULT __stdcall put_Cmd (unsigned long nCmdID ); virtual HRESULT __stdcall get_index (unsigned long * nIndex ); virtual HRESULT __stdcall get_CommandItemType (enum artCommandItemType * pVal ); virtual HRESULT __stdcall put_CommandItemType (enum artCommandItemType pVal ); virtual HRESULT __stdcall get_Width (long * pVal ); virtual HRESULT __stdcall put_Width (long pVal ); virtual HRESULT __stdcall get_NotifyCommand (IDispatch * * pNotifyCommand ); virtual HRESULT __stdcall put_NotifyCommand (IDispatch * pNotifyCommand ); virtual HRESULT __stdcall get_ItemWindow (wireHWND * phwnd ); virtual HRESULT __stdcall get_CmdHandle (VARIANT_BOOL * pHandle ); virtual HRESULT __stdcall put_CmdHandle (VARIANT_BOOL pHandle ); virtual HRESULT __stdcall get_IconIndex (unsigned long * nIndex ); virtual HRESULT __stdcall put_IconIndex (unsigned long nIndex ); virtual HRESULT __stdcall get_Icon (wireHICON * hIcon ); virtual HRESULT __stdcall put_Icon (wireHICON hIcon ); virtual HRESULT __stdcall get_Bitmap (wireHBITMAP * hBitmap ); virtual HRESULT __stdcall put_Bitmap (wireHBITMAP hBitmap ); virtual HRESULT __stdcall get_ChildCommandBar (ICommandBar * * pCommandBars ); virtual HRESULT __stdcall put_ChildCommandBar (ICommandBar * pCommandBars ); virtual HRESULT __stdcall get_ParentCommandBar (ICommandBar * * pCommandBars ); virtual HRESULT __stdcall IsChildItem (VARIANT_BOOL * pChild ); virtual HRESULT __stdcall CreateCommandBar (ICommandBar * * pCommandBars ); virtual HRESULT __stdcall MoveItem (unsigned long nNewIndex );
历史
- 2009 年 5 月 13 日:初始发布