zoukankan      html  css  js  c++  java
  • SetWindowLong 给MDI窗体加背景

    //给MDI窗体加背景 
    //设置Form1窗体的FormStyle属性为fsMDIForm
    //设置Form2窗体的FormStyle属性为fsMDIChild

    // Image控件 Bmp格式图片

      private
          FClientInstance : TFarProc;
          FPrevClientProc : TFarProc;
          Procedure ClientWndProc(Var Message: TMessage);

    procedure TForm1.ClientWndProc(var Message: TMessage);
    var
          Dc : hDC;
          Row : Integer;
          Col : Integer;
    begin
      with Message do
        case Msg of
        WM_ERASEBKGND://当要重会背景时
        begin
          Dc := TWMEraseBkGnd(Message).Dc;
          // 铺图象
          //计算并会制行和高总共要画的数量。
          for Row := 0 to ClientHeight div Image1.Picture.Height do
            for Col := 0 to ClientWidth div Image1.Picture.Width do
              BitBlt(Dc,Col * Image1.Picture.Width,Row * Image1.Picture.Height
                     ,Image1.Picture.Width,Image1.Picture.Height
                     ,Image1.Picture.Bitmap.Canvas.Handle,0,0,SRCCOPY);
          Result := 1;
          end;
        else // 传递其他消息
          Result := CallWindowProc(FPrevClientProc,ClientHandle,Msg,wParam,lParam);
      end;
    end;
    procedure TForm1.FormShow(Sender: TObject);
    begin
      FClientInstance := MakeObjectInstance(ClientWndProc);//将自定义过程的地址入口存入PClientInstance中
      FPrevClientProc := Pointer(GetWindowLong(ClientHandle,GWL_WNDPROC));//记录消息位置
      SetWindowLong(ClientHandle,GWL_WNDPROC,LongInt(FClientInstance));//重新载入窗口的消息并继续处理。
    end;

    //为非MDI窗体制作背景




  • 相关阅读:
    [CF846E]Chemistry in Berland题解
    [CF846D]Monitor题解
    [CF846B]Math Show题解
    [CF846A]Curriculum Vitae题解
    斜率优化 学习笔记
    【CF115E】Linear Kingdom Races 题解(线段树优化DP)
    【洛谷P3802】小魔女帕琪 题解(概率期望)
    7月13日考试 题解(DFS序+期望+线段树优化建图)
    【BZOJ1426】收集邮票 题解 (期望)
    【HNOI2010】弹飞绵羊 题解(分块)
  • 原文地址:https://www.cnblogs.com/xe2011/p/2531617.html
Copyright © 2011-2022 走看看