browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

使用ATL编写Smartphone窗口应用程序

Posted by on 2005 年 09 月 13 日

你可以任意转载本文,但请在转载后的文章中注明作者和原始链接。
媒体约稿请联系 titilima_AT_163.com(把“_AT_”换成“@”)。

1、包含相应的头文件,并指定应用程序模块。

C++代码
  1. #include <atlbase.h>   
  2. CComModule _Module;   
  3. #include <atlwin.h>   
  4. #include <aygshell.h>  

2、为Smartphone特有的菜单处理方式编写窗口类CSpWindow。

C++代码
  1. class CSpWindow : public CWindow   
  2. {   
  3. public:   
  4.     BOOL InitWindow( UINT nMenuBarID )   
  5.     {   
  6.         // 指定对话框的全屏显示   
  7.         SHINITDLGINFO idi;   
  8.         ZeroMemory( &idi, sizeof( idi ) );   
  9.         idi.dwMask = SHIDIM_FLAGS;   
  10.         idi.dwFlags = SHIDIF_SIZEDLGFULLSCREEN;   
  11.         idi.hDlg = m_hWnd;   
  12.   
  13.         // 设置软键菜单   
  14.         SHMENUBARINFO mbi;   
  15.         ZeroMemory( &mbi, sizeof( SHMENUBARINFO ) );   
  16.         mbi.cbSize = sizeof( SHMENUBARINFO );   
  17.         mbi.hwndParent = m_hWnd;   
  18.         mbi.nToolBarId = nMenuBarID;   
  19.         mbi.hInstRes = _Module.m_hInstResource;   
  20.   
  21.         return SHInitDialog( &idi ) && SHCreateMenuBar( &mbi );   
  22.     }   
  23. };  

3、使用CSpWindow填充模板CDialogImpl(或CWindowImpl)。

C++代码
  1. class CMyDialog : public CDialogImpl< CMyDialog, CSpWindow >   
  2. {   
  3. public:   
  4.     enum { IDD = IDD_MAIN_DLG };   
  5.     BEGIN_MSG_MAP( CMyDialog )   
  6.         MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )   
  7.         COMMAND_ID_HANDLER( ID_MENU_EXIT, OnMenuExit )   
  8.     END_MSG_MAP()   
  9.     LRESULT OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL bHandled )   
  10.     {   
  11.         InitWindow( IDR_MENUBAR );   
  12.         return 0;   
  13.     }   
  14.     LRESULT OnMenuExit( UINT uCode, int nID, HWND hWndFocus, BOOL& bHandled )   
  15.     {   
  16.         EndDialog( 0 );   
  17.         return 0;   
  18.     }   
  19. };  

4、编写WinMain。

C++代码
  1. int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd )   
  2. {   
  3.     _Module.Init( NULL, hInstance );   
  4.     CMyDialog dlg;   
  5.     int nRet = dlg.DoModal( NULL );   
  6.     _Module.Term();   
  7.     return nRet;   
  8. }  

订阅本站

没有评论

(Required)
(Required, will not be published)