• <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>
            posts - 34,comments - 2,trackbacks - 0

            雖說(shuō)現(xiàn)在的應(yīng)用程序普遍使用標(biāo)簽形式,但是多文檔依然作為文檔編輯重要形式。例如 ps 、vc6 等。
            介紹一些用法:
            1、框架窗口:創(chuàng)建一個(gè)客戶區(qū)窗口。類名:MDICLIENT
               文檔窗口:創(chuàng)建:CreateWindow(...CLIENTCREATESTRUCT)
            typedef struct tagCLIENTCREATESTRUCT { 
                HANDLE hWindowMenu;       //要加入文檔列表的子菜單的句柄,文檔列表菜單
                UINT   idFirstChild;  //與文檔列表中的第一個(gè)文檔窗口相關(guān)聯(lián)的菜單ID
            } CLIENTCREATESTRUCT;

            2、
            typedef struct tagMDICREATESTRUCT { // mdic
                LPCTSTR szClass;
                LPCTSTR szTitle;
                HANDLE  hOwner;
                int     x;
                int     y;
                int     cx;
                int     cy;
                DWORD   style;
                LPARAM  lParam;
            } MDICREATESTRUCT;

            要有一個(gè)顯示文檔列表的菜單
            3、消息:
            主窗口:不處理的消息:reurn DelFrameProc(hwnd,hwndClient,message,wParam,lParam);
            子文檔窗口:不處理的消息: return DefMDIChildProc (hwnd, message, wParam, lParam) ;
            (1)
            WM_MDICREATE      //應(yīng)用程序通過(guò)發(fā)送 WM_MDICREATE創(chuàng)建一個(gè)文檔
            wParam = 0;                                     // not used; must be zero
            lParam = (LPARAM) (LPMDICREATESTRUCT) lpmdic;   // creation data
            (2)
            WM_MDIGETACTIVE   //客戶區(qū)通過(guò)發(fā)送WM_MDIGETACTIVE獲得活動(dòng)子窗口的句柄
            wParam = 0;                      // not used; must be zero
            lParam = (LPBOOL) lpfMaximized;  // optional pointer to maximized state flag

            (3)
            WM_QUERYENDSESSION     //其lParam參數(shù)可以區(qū)分是否關(guān)閉
            nSource = (UINT) wParam;    // 未用
            fLogOff = lParam   
            返回true表示終結(jié),false表示未終結(jié)

            (4)
            WM_MDIDESTROY      //發(fā)送給客戶區(qū)結(jié)束子文檔
            wParam = (WPARAM) (HWND) hwndChild; // handle to child to close
            lParam = 0;  


            (5)
            WM_MDITILE     //以平鋪方式重新排列文檔。
            wParam = (WPARAM) (UINT) fuTile; // tiling flag
            lParam = 0;

            (6)
            WM_MDICASCADE      //以層疊方式重新排列文檔
            wParam = (WPARAM) (UINT) fuCascade;  // cascade flag
            lParam = 0; 

            (7)
            WM_MDIICONARRANGE    //重新排列所有最小化的文檔
            wParam = 0; // not used; must be zero
            lParam = 0; // not used; must be zero

            (8)當(dāng)窗口變成活動(dòng)或非活動(dòng)的,都接收此此消息
            WM_MDIACTIVATE   //主窗口接收時(shí):得到一個(gè)活動(dòng)子窗口
            // Message sent to MDI client
            wParam = (WPARAM) (HWND) hwndChildAct; // 設(shè)定活動(dòng)子窗口的句柄
            lParam = 0;                            // not used; must be zero
             //子文檔窗口接收時(shí),
            // Message received by MDI child
            hwndChildDeact = (HWND) wParam;        // 失去活動(dòng)的窗口
            hwndChildAct = (HWND) lParam;          // 接受活動(dòng)的窗口


            (9)
            WM_MDISETMENU    //設(shè)置主窗口的菜單。
            wParam = (WPARAM) (HMENU) hmenuFrame;  // handle to frame menu
            lParam = (LPARAM) (HMENU) hmenuWindow; // handle to Window menu ,加入新文檔列表的菜單
            Windows會(huì)在該菜單項(xiàng)上自動(dòng)添加。

            (10)注意:像WM_CHILDACTIVATE 、WM_GETMINMAXINFO 、WM_MENUCHAR 、WM_MOVE 、WM_SETFOCUS 、WM_SIZE 和WM_SYSCOMMAND。要傳給DefMDIChildProc處理。故:在這些消息后用break,而不return。

            (11)不常用到的
            WM_MDIRESTORE = $0223;  //程序 發(fā)送此消息給MDI客戶窗口讓子窗口從最大最小化恢復(fù)到原來(lái)大小
            WM_MDINEXT = $0224;   //程序 發(fā)送此消息給MDI客戶窗口激活下一個(gè)或前一個(gè)窗口
            WM_MDIMAXIMIZE = $0225;   //程序發(fā)送此消息給MDI客戶窗口來(lái)最大化一個(gè)MDI子窗口;


            4、加速鍵的消息循環(huán)
                while (GetMessage (&msg, NULL, 0, 0))
                 {
                      if (!TranslateMDISysAccel (hwndClient, &msg) &&
                          !TranslateAccelerator (hwndFrame, hAccel, &msg))
                      {
                           TranslateMessage (&msg) ;
                           DispatchMessage (&msg) ;
                      }
                 }

            /////////才掌握,發(fā)現(xiàn)現(xiàn)在大多數(shù)公司都棄用啦。可惜啊,可惜啊、

            posted on 2011-04-11 11:03 Yu_ 閱讀(458) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Windows程序設(shè)計(jì)
            亚洲午夜久久影院| 久久精品国产AV一区二区三区 | 综合久久国产九一剧情麻豆| 精品久久久久久久久久中文字幕 | 国产Av激情久久无码天堂| 久久久无码精品亚洲日韩蜜臀浪潮 | 国内精品久久国产大陆| 奇米综合四色77777久久| 一本一本久久A久久综合精品| 99久久无色码中文字幕人妻| 色欲久久久天天天综合网| 人妻无码αv中文字幕久久| 精品国产乱码久久久久久1区2区| 国产精品久久久亚洲| 99久久精品国产毛片| 久久久久亚洲AV无码专区桃色| 久久中文精品无码中文字幕| 中文精品99久久国产 | 国产午夜精品久久久久九九电影| 99久久人人爽亚洲精品美女| 久久天天躁狠狠躁夜夜2020| 亚洲第一永久AV网站久久精品男人的天堂AV | 人妻无码久久精品| 亚洲欧美日韩中文久久| 久久久久久毛片免费播放| 亚洲嫩草影院久久精品| 狠狠色丁香久久婷婷综合蜜芽五月 | 精品久久久久久亚洲精品| 99久久国产综合精品成人影院| 久久这里有精品视频| 国产精品国色综合久久| 久久久久国产| 久久久久亚洲精品无码蜜桃| 精品99久久aaa一级毛片| 欧美国产成人久久精品| 国内精品伊人久久久久av一坑| 久久久久久国产精品无码下载| 伊人久久无码中文字幕| 欧美午夜A∨大片久久| 久久se精品一区二区| 久久AV无码精品人妻糸列|