WTL MDI Support Class for WinCE

WTL is a very useful template library for Windows programming, especially for Pocket PC and SmartPhone (which do not even support MFC). But, when I implement a multiview application on SmartPhone and Pocket PC, a block occurred. WTL cannot create a MDI project in WinCE. And, I tried to port a MDI project on the desktop; unfortunately, I failed. So, I decided to create a MDI support class myself, god bless me. It is not such difficult as what I thought initailly.

I created a template class named CMDIBase. You can inherit it from your MainFrame class, like this:

#include "MDIBase.h"

class CMainFrame : public CFrameWindowImpl<CMainFrame>,
                   public CUpdateUI<CMainFrame>,
                   public CMessageFilter,
                   public CIdleHandler,CMDIBase<CMainFrame>

then and a msg chain in CMainFrame's message map:

CHAIN_MSG_MAP(CMDIBase<CMainFrame>)

and used functions in CMDIBase:

InitailToolBar
SwitchView
EnableUIItem

The description is below. It also was written in the CMDIBase code file.

Description

This class is a WTL-based template class, and only for WinCE because it is not so useful if you can create a WTL MDI project on the desktop.

Note: CMDIBase must be used in a SDI WTL project.

The motivation of making this class is to add Multiple view UI support for WinCE WTL-based project.

It provides some functions for changing the view and menubar or toolbar related to the view. You can update the status of a command item in the menubar or toolbar. The most important thing is that it provides a more reasonable way to handle messages in the right place. It's just like in an MFC MDI project; you can handle menu commands in the related view class, not like in a WTL MDI project, where you can hardly chain a message into a view and all command messages must be handled by the mainframe.

The following list shows the main functions in CMDIBase:

  • InitailToolBar: It just called a create toolbar function and a movewindow function. If it does not call movewindow, the mainframe cannot be displayed correctly.
  • SwitchView: Switches to the view you want to show, and loads the related menu and toolbar. menuID and toolbarID must be uniform.
  • EnableUIItem: Set the menu item and toolbar item to enable/disable.

CUIUpdate class does not work for these, but it can set the check state correctly. So, the setcheckstatus function is not added in CMDIBase.



About the Author

ff tongzhi

lost my way

Downloads

Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Thanks to wide spread cloud hosting and innovations small businesses can meet and exceed the legacy systems of goliath corporations. Explore the freedom to work how you want, with a phone system that will adapt to your evolving needs and actually save you lots of expense—read Get an Enterprise Phone System without High Cost and Complexity. The article clearly illustrates: The only hardware you'll need is phone equipment for advanced voice and fax. How to join all your employees, mobile devices, …

  • Cloud computing isn't new, but it's still a hot topic in technology circles. Moving to the cloud has done great things for many businesses. When it comes to handling a basic business necessity, cloud computing has brought many improvements to overall business continuity. Using the cloud for DR makes a lot of sense for many, but it's not exactly the most simple concept. Read this eBook to find answers to all the key questions IT professionals have about cloud-based disaster recovery, and helpful info around the …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date