亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi在MDI窗口中顯示圖形控件及指定背景的解決方案

2019-11-18 18:54:43
字體:
來源:轉載
供稿:網友
   在使用MDI介面時,有時候需要在MDI客戶窗口中顯示一些圖形或軟件封面,使得軟件介面不會顯得空曠,軟件功能也能一目了然。然而在Delphi中并沒有直接給出這些接口。在MDI窗體中放入任何圖形控件在運行時都不能顯示。因此需要對MDI窗體進行改造。
申明:
    本方案僅針對MDI窗體,如果應用在非MDI窗體中,后果難說,你自已試試吧。
    記住,窗體的FormStyle屬性要設置為:fsMDIForm。
解決方案:
    1.    在MDI主窗體中無法接收到MDI客戶窗口的消息(Message),因此,需要自已定義客戶窗口的處理過程(Window PRocedure),并接管MDI客戶窗口(需在重載的CreateWnd過程中實現):
        procedure TMDIForm.CreateWnd;
        begin
          inherited;
          FNewWndProc := MakeObjectInstance(ClientWndProc);
          FOldWndProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
          SetWindowLong(ClientHandle, GWL_WNDPROC, Longint(FNewWndProc));
        end;
        其中,ClientWndProc為自定義的窗口過程:    procedure ClientWndProc(var Message: TMessage);
        FOldWndProc用來存放舊的窗口過程的指針。
    2.    實現自已的客戶窗口過程:
        procedure TMDIForm.ClientWndProc(var Message: TMessage);
        var
          R: TRECT;
       
          procedure Default;
          begin
            with Message do
              Result := CallWindowProc(FOldWndProc, ClientHandle, Msg, wParam, lParam);
          end;
        var
          PS: TPaintStruct;
        begin
          R := ClientRect;
          case Message.Msg of
          WM_PAINT:
            begin
              BeginPaint(ClientHandle,PS);
              try
                Canvas.Lock;
                try
                  Canvas.Handle := PS.hdc;
                  try
                    Paint;
                    if ControlCount > 0 then
                      PaintControls(PS.hdc,Controls[0]);
                  finally
                    Canvas.Handle := 0;
                  end;
                finally
                  Canvas.Unlock;
                end;
              finally
                EndPaint(ClientHandle,PS);
              end;
            end;
          WM_ERASEBKGND:
            begin
              DrawBG(TWMEraseBkGnd(Message).DC);
              Message.Result := 1;
            end;
          WM_VSCROLL,WM_HSCROLL:
            begin
              InvalidateRect(ClientHandle,@R,true);
              Default;
            end;
          WM_SIZE:
            begin
              InvalidateRect(ClientHandle,@R,true);
              Default;
            end;
          else
            Default;
          end;
        end;
        上面的DrawBG是用于畫窗口背景的。
    3.    實現窗口背景。
        為了可以讓繼承者也能定義自已的背景,故此過程說明為virtual:
          protected
            procedure DrawBG(DC: HDC); virtual;
        在此,DrawBG過程只是簡單的填充窗口背景:
        procedure TMDIForm.DrawBG(DC: HDC);
        begin
          if Brush.Color <> clNone then
            FillRect(DC, ClientRect, Brush.Handle);
        end;
    4.    綜上所述,總結TMDIFrom類定義如下:
          TMDIForm = class(TForm)
          private
            FOldWndProc: TFarProc;
            FNewWndProc: TFarProc;
            procedure ClientWndProc(var Message: TMessage);
          protected
            procedure DrawBG(DC: HDC);virtual;
            procedure CreateWnd; override;
          end;
    5.    經過以上改造后,就可以在DrawBG中畫出指定的背景(需直接調用Windows 的GUI接口),或者直接使用圖形控件,或者實現窗體的OnPaint事件,MDI窗口從此多姿多彩。

上一篇:Delphi菜單如何做成word2000的可??繕幼?/a>

下一篇:DELPHI中圖像的顯示效果

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩女在线观看| 国产精品亚洲精品| 久久天天躁狠狠躁夜夜躁2014| 国产精品美女www爽爽爽视频| 最新国产成人av网站网址麻豆| 国产成人精品免费久久久久| 国产精品久久久久久亚洲影视| 狠狠躁夜夜躁人人躁婷婷91| 亚洲一区二区三| 久久久国产视频| 中文字幕久久久av一区| 国产精品久久久久久久久久三级| 欧美大荫蒂xxx| 神马久久桃色视频| 欧洲永久精品大片ww免费漫画| 高清一区二区三区日本久| 欧美激情一级精品国产| 91精品国产一区| 岛国av一区二区| 亚洲国产精品嫩草影院久久| 日韩视频免费中文字幕| 96精品视频在线| 久久99热精品这里久久精品| 美女黄色丝袜一区| 久久国产精品久久国产精品| 在线亚洲男人天堂| 国产99久久精品一区二区永久免费| 精品国产精品三级精品av网址| 色偷偷偷综合中文字幕;dd| 亚洲欧美一区二区精品久久久| 国产精品一区二区三区成人| 欧美日韩国产成人| 国产91精品久久久| 久久久久久免费精品| 亚洲精品日韩欧美| 亚洲已满18点击进入在线看片| 久久久成人精品视频| 91av国产在线| 亚洲黄色成人网| 成人信息集中地欧美| 国产精品美女主播在线观看纯欲| 亚洲石原莉奈一区二区在线观看| 欧美性猛交xxxx免费看| 97精品视频在线观看| 久久99亚洲热视| 激情av一区二区| 久久久久久亚洲精品| 国产精品久久色| 欧美日韩激情网| 成人久久久久久| 中文字幕九色91在线| 国产精品揄拍一区二区| 国产精品久久久久免费a∨| 亚洲综合色av| 最近2019年手机中文字幕| 91国在线精品国内播放| 欧美极品美女视频网站在线观看免费| 日韩精品欧美国产精品忘忧草| 亚洲国产精品va在线看黑人| 亚洲国产高潮在线观看| 亚洲一区二区免费在线| 国产极品精品在线观看| 亚洲xxxx妇黄裸体| 日韩一区二区在线视频| 91香蕉嫩草神马影院在线观看| 最近2019中文字幕大全第二页| 欧美亚洲日本网站| 日韩在线观看免费高清完整版| 久久久国产精品一区| 欧美日韩在线视频一区| 久久久久久综合网天天| 日本精品久久中文字幕佐佐木| 亚洲国产日韩一区| 亚洲综合在线播放| 亚洲跨种族黑人xxx| 亚洲欧美综合另类中字| 亚洲色图第一页| 九九九热精品免费视频观看网站| 中文字幕av一区二区三区谷原希美| 欧美中文字幕视频在线观看| 欧美性在线观看| 欧美猛交ⅹxxx乱大交视频| 国产在线拍偷自揄拍精品| 欧美在线观看日本一区| 高清一区二区三区四区五区| 91精品国产777在线观看| 精品福利一区二区| 日韩欧美成人区| 久久男人av资源网站| 国产免费一区二区三区在线观看| 日韩av手机在线看| 国产精彩精品视频| 亚洲午夜精品久久久久久性色| 91理论片午午论夜理片久久| 精品久久久久久国产91| 欧美精品久久久久久久免费观看| 国产小视频91| 在线亚洲国产精品网| 日韩av大片免费看| 在线播放日韩专区| 国产精品aaa| 7m第一福利500精品视频| 国产精品av免费在线观看| 国产综合在线看| 68精品国产免费久久久久久婷婷| 国产欧美日韩91| 欧美日韩亚洲视频一区| 91手机视频在线观看| 国产成人免费av电影| 中国日韩欧美久久久久久久久| 日韩精品视频在线| 91深夜福利视频| 性欧美xxxx视频在线观看| 国产91在线播放精品91| 久久久久久免费精品| 久久精品视频在线| 亚洲人永久免费| 欧美wwwwww| 精品国偷自产在线视频99| 亚洲日本成人女熟在线观看| 欧美视频在线观看免费| 亚州国产精品久久久| 亚洲精品一区av在线播放| 琪琪第一精品导航| 国自产精品手机在线观看视频| 亚洲精品成a人在线观看| 欧美视频在线免费看| 久久91亚洲精品中文字幕| 精品亚洲国产视频| 日韩成人在线视频观看| 亚洲精品一区av在线播放| 秋霞成人午夜鲁丝一区二区三区| 国产精品视频播放| 国产成人在线一区二区| 日韩毛片在线看| 亚洲国产日韩精品在线| 亚洲一区二区三区xxx视频| 97国产精品人人爽人人做| 91精品国产高清| 亚洲色图国产精品| 色狠狠av一区二区三区香蕉蜜桃| 亚洲精品一区二区网址| 精品伊人久久97| 国产美女被下药99| 国产亚洲精品美女久久久久| 欧美网站在线观看| 91在线观看免费| 人九九综合九九宗合| 成人激情在线观看| 成人精品一区二区三区电影免费| 国产亚洲精品激情久久| 亚洲大尺度美女在线| 中文字幕九色91在线| 国产精品丝袜一区二区三区| 亚洲视频免费一区| 日韩欧美精品中文字幕| 国产一区二区视频在线观看| 亚洲成人av在线| 国产精品www网站| 国产精品成人国产乱一区| 亚洲老头同性xxxxx| 亚洲人成电影在线播放| 成人欧美在线观看| 岛国视频午夜一区免费在线观看|