• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            動(dòng)態(tài)生成對(duì)話框

            Creating   a   Template   in   Memory
            Applications   sometimes   adapt   or   modify   the   content   of   dialog   boxes   depending   on   the   current   state   of   the   data   being   processed.   In   such   cases,   it   is   not   practical   to   provide   all   possible   dialog   box   templates   as   resources   in   the   application 's   executable   file.   But   creating   templates   in   memory   gives   the   application   more   flexibility   to   adapt   to   any   circumstances.  

            In   the   following   example,   the   application   creates   a   template   in   memory   for   a   modal   dialog   box   that   contains   a   message   and   OK   and   Help   buttons.  

            In   a   dialog   template,   all   character   strings,   such   as   the   dialog   box   and   button   titles,   must   be   Unicode   strings.   This   example   uses   the   MultiByteToWideChar   function   to   generate   these   Unicode   strings,   because   Windows   95/98   and   Windows   NT/Windows   2000   support   MultiByteToWideChar  

            The   DLGITEMTEMPLATE   structures   in   a   dialog   template   must   be   aligned   on   DWORD   boundaries.   To   align   these   structures,   this   example   uses   a   helper   routine   that   takes   an   input   pointer   and   returns   the   closest   pointer   that   is   aligned   on   a   DWORD   boundary.

            #define   ID_HELP       150
            #define   ID_TEXT       200

            LPWORD   lpwAlign   (   LPWORD   lpIn)
            {
                    ULONG   ul;

                    ul   =   (ULONG)   lpIn;
                    ul   +=3;
                    ul   > > =2;
                    ul   < <=2;
                    return   (LPWORD)   ul;
            }

            LRESULT   DisplayMyMessage(HINSTANCE   hinst,   HWND   hwndOwner,  
                    LPSTR   lpszMessage)
            {
                    HGLOBAL   hgbl;
                    LPDLGTEMPLATE   lpdt;
                    LPDLGITEMTEMPLATE   lpdit;
                    LPWORD   lpw;
                    LPWSTR   lpwsz;
                    LRESULT   ret;
                    int   nchar;

                    hgbl   =   GlobalAlloc(GMEM_ZEROINIT,   1024);
                    if   (!hgbl)
                            return   -1;
             
                    lpdt   =   (LPDLGTEMPLATE)GlobalLock(hgbl);
             
                    //   Define   a   dialog   box.
             
                    lpdt-> style   =   WS_POPUP   |   WS_BORDER   |   WS_SYSMENU
                                                  |   DS_MODALFRAME   |   WS_CAPTION;
                    lpdt-> cdit   =   3;     //   number   of   controls
                    lpdt-> x     =   10;     lpdt-> y     =   10;
                    lpdt-> cx   =   100;   lpdt-> cy   =   100;

                    lpw   =   (LPWORD)   (lpdt   +   1);
                    *lpw++   =   0;       //   no   menu
                    *lpw++   =   0;       //   predefined   dialog   box   class   (by   default)

                    lpwsz   =   (LPWSTR)   lpw;
                    nchar   =   1+   MultiByteToWideChar   (CP_ACP,   0,   "My   Dialog ",  
                                                                                    -1,   lpwsz,   50);
                    lpw       +=   nchar;

                    //-----------------------
                    //   Define   an   OK   button.
                    //-----------------------
                    lpw   =   lpwAlign   (lpw);   //   align   DLGITEMTEMPLATE   on   DWORD   boundary
                    lpdit   =   (LPDLGITEMTEMPLATE)   lpw;
                    lpdit-> x     =   10;   lpdit-> y     =   70;
                    lpdit-> cx   =   80;   lpdit-> cy   =   20;
                    lpdit-> id   =   IDOK;     //   OK   button   identifier
                    lpdit-> style   =   WS_CHILD   |   WS_VISIBLE   |   BS_DEFPUSHBUTTON;

                    lpw   =   (LPWORD)   (lpdit   +   1);
                    *lpw++   =   0xFFFF;
                    *lpw++   =   0x0080;         //   button   class

                    lpwsz   =   (LPWSTR)   lpw;
                    nchar   =   1+MultiByteToWideChar   (CP_ACP,   0,   "OK ",   -1,   lpwsz,   50);
                    lpw       +=   nchar;
                    lpw   =   lpwAlign   (lpw);   //   align   creation   data   on   DWORD   boundary
                    *lpw++   =   0;                       //   no   creation   data

                    //-----------------------
                    //   Define   a   Help   button.
                    //-----------------------
                    lpw   =   lpwAlign   (lpw);   //   align   DLGITEMTEMPLATE   on   DWORD   boundary
                    lpdit   =   (LPDLGITEMTEMPLATE)   lpw;
                    lpdit-> x     =   55;   lpdit-> y     =   10;
                    lpdit-> cx   =   40;   lpdit-> cy   =   20;
                    lpdit-> id   =   ID_HELP;         //   Help   button   identifier
                    lpdit-> style   =   WS_CHILD   |   WS_VISIBLE   |   BS_PUSHBUTTON;

                    lpw   =   (LPWORD)   (lpdit   +   1);
                    *lpw++   =   0xFFFF;
                    *lpw++   =   0x0080;                                   //   button   class   atom

                    lpwsz   =   (LPWSTR)   lpw;
                    nchar   =   1+MultiByteToWideChar   (CP_ACP,   0,   "Help ",   -1,   lpwsz,   50);
                    lpw       +=   nchar;
                    lpw   =   lpwAlign   (lpw);   //   align   creation   data   on   DWORD   boundary
                    *lpw++   =   0;                       //   no   creation   data

                    //-----------------------
                    //   Define   a   static   text   control.
                    //-----------------------
                    lpw   =   lpwAlign   (lpw);   //   align   DLGITEMTEMPLATE   on   DWORD   boundary
                    lpdit   =   (LPDLGITEMTEMPLATE)   lpw;
                    lpdit-> x     =   10;   lpdit-> y     =   10;
                    lpdit-> cx   =   40;   lpdit-> cy   =   20;
                    lpdit-> id   =   ID_TEXT;     //   text   identifier
                    lpdit-> style   =   WS_CHILD   |   WS_VISIBLE   |   SS_LEFT;

                    lpw   =   (LPWORD)   (lpdit   +   1);
                    *lpw++   =   0xFFFF;
                    *lpw++   =   0x0082;                                                   //   static   class

                    for   (lpwsz   =   (LPWSTR)lpw;        
                            *lpwsz++   =   (WCHAR)   *lpszMessage++;
                    );
                    lpw   =   (LPWORD)lpwsz;
                    lpw   =   lpwAlign   (lpw);   //   align   creation   data   on   DWORD   boundary
                    *lpw++   =   0;                       //   no   creation   data

                    GlobalUnlock(hgbl);  
                    ret   =   DialogBoxIndirect(hinst,   (LPDLGTEMPLATE)   hgbl,  
                            hwndOwner,   (DLGPROC)   DialogProc);  
                    GlobalFree(hgbl);  
                    return   ret;  
            }

            posted on 2011-03-24 10:53 wrh 閱讀(639) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            導(dǎo)航

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            統(tǒng)計(jì)

            常用鏈接

            留言簿(19)

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            国产毛片欧美毛片久久久| 欧美国产成人久久精品| 伊人色综合久久天天网| 久久91精品国产91久久小草| 亚洲午夜久久久久久久久电影网| 久久免费大片| 中文字幕久久精品无码| 久久综合久久鬼色| 99热热久久这里只有精品68| 久久久久亚洲AV无码去区首| 日本久久久久久中文字幕| 精品无码久久久久国产| 久久久久亚洲AV片无码下载蜜桃| 久久福利片| 久久久网中文字幕| 91精品免费久久久久久久久| 久久久久99精品成人片直播| 中文字幕无码久久人妻| 亚洲精品tv久久久久久久久久| 国产精品免费看久久久香蕉| 国产精品视频久久久| 国内精品久久久久久麻豆| 亚洲成人精品久久| 色偷偷88欧美精品久久久| 亚洲人成无码久久电影网站| 久久久久波多野结衣高潮| 成人综合伊人五月婷久久| 久久久青草青青亚洲国产免观| 99久久精品国内| 99精品国产综合久久久久五月天| 国内高清久久久久久| 激情久久久久久久久久| 精品综合久久久久久98| 久久99精品国产麻豆婷婷| 天堂久久天堂AV色综合| 国产精品无码久久四虎| 亚洲AV无码一区东京热久久| 国产精品久久毛片完整版| 综合久久一区二区三区 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 香蕉99久久国产综合精品宅男自|