DSP

发布WTL应用程序向导AppWizard0.2

2019-07-13 18:30发布

    WTL应用程序向导AppWizard为独立应用程序,模板资源直接使用wtl80应用程序向导AppWiz,与其兼容,并支持更多功能。生成VS60的.dsp文件,可以为VS60、VS2002、VS2003、VS2005、VS2008读取。
    AppWizard0.2版本新增了Frame Dialog向导方式,即能够生成支持Menu、ReBar、CmdBar、ToolBar、StatusBar的对话框应用程序,这是通过VFC的WTL扩展库来实现.

一、下载安装:
    下载地址: http://sf.net/projects/visualfc
   将下载下来的AppWizard.zip解压后即可正常使用。
   如果需要使用Frame Dialog向导,需要将./include/vfcframe.h和vfcfonts.h文件复制到WTL80的include目录下。
二、AppWizard使用:
   运行AppWizard,这个向导与WTL80带的向导用法完全一样,在这里不再细说,重点讲一下Frame Dialog。
  在Application Type向导页下,选择Dialog Based后可以选择Frame Dialog模式,其下有复选按钮"check it add vfc files to project..."如果选中将在生成项目时自动将vfcframe.h文件复制到项目中,并使用include"vfcframe.h"包含,否则使用#include 在VC默认的include中进行搜索(默认)。选中Frame Dialog后在下一页可以对ReBar、CmdBar、ToolBar、StatusBar进行选择控制。

生成代码:
class CMainDlg : public CDialogImpl<CMainDlg>public CUpdateUI<CMainDlg>,
        
public CMessageFilter, public CIdleHandler,
        
public CFrameDialog<CMainDlg>public CDialogResize<CMainDlg>
在OnInitDialog中实现
        // create command bar window
        HWND hWndCmdBar = m_CmdBar.Create(m_hWnd, rcDefault, NULL, ATL_SIMPLE_CMDBAR_PANE_STYLE);
        
// attach menu
        m_CmdBar.AttachMenu(GetMenu());
        
// load command bar images
        m_CmdBar.LoadImages(IDR_MAINFRAME);
        
// remove old menu
        SetMenu(NULL);

        HWND hWndToolBar 
= CreateSimpleToolBarCtrl(m_hWnd, IDR_MAINFRAME, FALSE, ATL_SIMPLE_TOOLBAR_PANE_STYLE);

        CreateSimpleReBar(ATL_SIMPLE_REBAR_NOBORDER_STYLE);
        AddSimpleReBarBand(hWndCmdBar);
        AddSimpleReBarBand(hWndToolBar, NULL, TRUE);

        CreateSimpleStatusBar();

        
//frame dialog reposition dialog
        RepositionDialog();

        
// register object for message filtering and idle updates
        CMessageLoop* pLoop = _Module.GetMessageLoop();
        ATLASSERT(pLoop 
!= NULL);
        pLoop
->AddMessageFilter(this);
        pLoop
->AddIdleHandler(this);

        UIAddChildWindowContainer(m_hWnd);

        UIAddToolBar(hWndToolBar);
        UISetCheck(ID_VIEW_TOOLBAR, 
1);
        UISetCheck(ID_VIEW_STATUS_BAR, 
1);

        DlgResize_Init();

三、代码控制
    生成的代码与SDI的CFrameWindowImpl类似,唯一注意的是增加了一个RepositionDialog函数进行了对话框布局的重新调整,之后通过CDialogResize进行界面的调整,如果需要进一步的控制可以使用VisualFC的WTL类向导进行代码自动生成和控制。

四、关于VisualFC和AppWizard
    VisualFC为WTL、WinxGUI提供类向导支持,可自动生成消息映射,布局管理,DDX、Update等代码,使用WTL和wxWidgets完成。
   AppWizard为WTL、WinxGUI提供应用程序向导支持,能够识别VS2005的向导模板文件,这个项目也由WTL编写,并利用VisualFC快速完成。