MDI wallpaper

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #54588
    Support
    Keymaster

      Hello!

      You can use OnPaint event, I think, look attached example.

      #54596
      Ronaldo Souza
      Participant
        'Support' wrote:

        Hello!

        You can use OnPaint event, I think, look attached example.

        Thanks for the reply!

        When I run the demo using AC version 10.23, I get a stack overflow on line 7327 of acSBUtils:

        Code:
        function TacMainWnd.CallPrevWndProc(const Handle: hwnd; const Msg: longint; const WParam: WPARAM; var LParam: LPARAM): LRESULT;
        var
        M: TMessage;
        begin
        if Assigned(OldWndProc) then begin
        M.Msg := Msg;
        M.WParam := WParam;
        M.LParam := LParam;
        M.Result := 0;
        OldWndProc(M);
        Result := M.Result;
        LParam := M.LParam;
        end
        else
        if Assigned(OldProc) then
        try
        Result := CallWindowProc(OldProc, Handle, Msg, WParam, LParam) <<<<<< STACK OVEREFLOW HERE
        except
        Result := 0;
        end
        else
        Result := 0;
        end;

        but it doesn't happen using version 10.22 (Delphi 7.0 Professional – build 4.453).

        I noticed this affects the background of all AC components, is there a way to avoid this side-effect?

        Best regards,

        Ronaldo

        #54598
        Support
        Keymaster

          Yes, I saw this error too, when prepared this demo.

          The error is fixed and new package with a fix will be available at the nearest days.

          #54603
          Ronaldo Souza
          Participant
            'Support' wrote:

            Yes, I saw this error too, when prepared this demo.

            The error is fixed and new package with a fix will be available at the nearest days.

            Thanks!

            The OnPaint approach works fine except for one detail I couldn't fix so far: the background of the statusbar (or any other component I place on the main form) is also drawn with the logo.

            Thanks in advance for any help you could provide!

            Ronaldo

            #54604
            Support
            Keymaster

              I think, you can exclude this statusbar rectangle before painting, like this:

              ExcludeClipRect(Canvas.Handle, sStatusBar1.Left, sStatusBar1.Top, sStatusBar1…)

              #51074
              Ronaldo Souza
              Participant
                'Support' wrote:

                I think, you can exclude this statusbar rectangle before painting, like this:

                ExcludeClipRect(Canvas.Handle, sStatusBar1.Left, sStatusBar1.Top, sStatusBar1…)

                Works perfectly. Thanks!

                Ronaldo

              Viewing 6 posts - 1 through 6 (of 6 total)
              • You must be logged in to reply to this topic.