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快速完成。