tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: GetWindowRectの値がおかしい
投稿日: 2017/05/19(Fri) 01:19
投稿者jikoryuu
    Private Enum DWMWINDOWATTRIBUTE
        DWMWA_NCRENDERING_ENABLED = 1
        DWMWA_NCRENDERING_POLICY
        DWMWA_TRANSITIONS_FORCEDISABLED
        DWMWA_ALLOW_NCPAINT
        DWMWA_CAPTION_BUTTON_BOUNDS
        DWMWA_NONCLIENT_RTL_LAYOUT
        DWMWA_FORCE_ICONIC_REPRESENTATION
        DWMWA_FLIP3D_POLICY
        DWMWA_EXTENDED_FRAME_BOUNDS
        DWMWA_LAST
    End Enum
    Private Declare Function DwmGetWindowAttribute Lib "dwmapi.dll" (
     ByVal hwnd As IntPtr,
     ByVal dwAttribute As DWMWINDOWATTRIBUTE,
     ByRef pvAttribute As RECT,
     ByVal cbAttribute As Int32) As Boolean

上記のように宣言して
下記のようにGetWindowRectの行を修正することで正しい値を得ることができました
(hControl,hOldControlの変更に注意)

    If DwmGetWindowAttribute(hControl, DWMWINDOWATTRIBUTE.DWMWA_EXTENDED_FRAME_BOUNDS,
         rDesktop, System.Runtime.InteropServices.Marshal.SizeOf(rDesktop)) = True Then
            GetWindowRect(hControl, rDesktop)
    End If

ただもう一つ問題が発生しました
自身のウィンドウのタイトルバーにドラッグすると反転表示がおかしくなってしまいます
これはまた時間を見て修正して行こうと思います

これで一応解決とさせて頂きます
Hongliangさん、ありがとうございました

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。