Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


24047 / 76732 ←次へ | 前へ→

【58040】Re:ダイアログBOXの表示
発言  Yuki  - 08/9/29(月) 7:17 -

引用なし
パスワード
   ▼熊谷隆史 さん:
>
>フックプロシージャにて、
>通知されてくるhDlgの親(GetParentで)のウィンドウハンドルを
>SetWindowPosやMoveWindowに指定して、移動させますが
>タイミング的にWM_INITDIALOGでは早すぎるので

WM_NOTIFYでよろしいですよ。
こんな感じで

' コモンダイアログのフックプロシージャ
Private Function OFNHookProc(ByVal hdlg As Long, _
               ByVal uMsg As Long, _
               ByVal wParam As Long, _
               ByVal lParam As Long) As Long
  Static DefaultView As Long
  Dim pProc    As Long
  Dim h      As Long
  Dim OFN     As OFNOTIFY ' OFNOTIFY構造体
  Dim RC     As RECT   ' RECT構造体
  Dim lngTop   As Long   ' ダイアログ上位置
  Dim lngLeft   As Long   ' ダイアログ左位置
  Dim lngWidth  As Long   ' ダイアログ幅
  Dim lngHeight  As Long   ' ダイアログ高さ
  Dim lngDTWidth As Long   ' デスクトップ幅
  Dim lngDTHeight As Long   ' デスクトップ高さ

  Select Case uMsg
    Case WM_INITDIALOG
      OFNHookProc = True
    Case WM_NOTIFY
      If lParam = 0 Then Exit Function
      CopyMemory OFN, ByVal lParam, Len(OFN)
      With OFN
        Select Case .hdr.code
          Case CDN_INITDONE
            ' ここで、ダイアログの初期表示位置を設定しています。
            Call GetWindowRect(GetParent(hdlg), RC)
            lngWidth = RC.Right - RC.Left
            lngHeight = RC.Bottom - RC.Top
            Call GetWindowRect(GetDesktopWindow, RC)
            lngDTWidth = RC.Right - RC.Left
            lngDTHeight = RC.Bottom - RC.Top
            Select Case m_Posi
              Case 0 ' 画面中央
                lngTop = (lngDTHeight - lngHeight) \ 2
                lngLeft = (lngDTWidth - lngWidth) \ 2
              Case 1 ' 左上
                lngTop = 0: lngLeft = 0
              Case 2 ' 左下
                lngTop = lngDTHeight - lngHeight
                lngLeft = 0
              Case 3 ' 右上
                lngTop = 0
                lngLeft = lngDTWidth - lngWidth
              Case 4 ' 右下
                lngTop = lngDTHeight - lngHeight
                lngLeft = lngDTWidth - lngWidth
            End Select
            Call SetWindowPos(GetParent(hdlg), 0, lngLeft, lngTop, 0, 0, SWP_NOSIZE Or SWP_NOZORDER)
          Case CDN_FOLDERCHANGE
        End Select
      End With
  End Select
End Function

0 hits

【58000】ダイアログBOXの表示位置 パトラッシュ 08/9/26(金) 22:55 質問
【58002】Re:ダイアログBOXの表示位置 neptune 08/9/26(金) 23:28 回答
【58008】Re:ダイアログBOXの表示位置 パトラッシュ 08/9/27(土) 10:35 質問
【58011】Re:ダイアログBOXの表示位置 neptune 08/9/27(土) 14:27 回答
【58012】Re:ダイアログBOXの表示 パトラッシュ 08/9/27(土) 16:56 質問
【58014】Re:ダイアログBOXの表示 neptune 08/9/27(土) 17:15 回答
【58016】Re:ダイアログBOXの表示 neptune 08/9/27(土) 20:06 回答
【58030】Re:ダイアログBOXの表示 パトラッシュ 08/9/28(日) 11:11 お礼
【58032】Re:ダイアログBOXの表示 熊谷隆史 08/9/28(日) 11:23 発言
【58033】Re:ダイアログBOXの表示 neptune 08/9/28(日) 14:55 発言
【58040】Re:ダイアログBOXの表示 Yuki 08/9/29(月) 7:17 発言
【58044】Re:ダイアログBOXの表示 neptune 08/9/29(月) 12:01 質問
【58046】Re:ダイアログBOXの表示 Yuki 08/9/29(月) 13:47 発言
【58047】Re:ダイアログBOXの表示 neptune 08/9/29(月) 15:11 お礼
【58054】ダイアログBOXのファイル名リスト パトラッシュ 08/9/30(火) 2:00 質問
【58057】Re:ダイアログBOXのファイル名リスト 熊谷隆史 08/9/30(火) 10:59 発言
【58058】Re:ダイアログBOXのファイル名リスト neptune 08/9/30(火) 11:25 発言
【58061】Re:ダイアログBOXのファイル名リスト 熊谷隆史 08/9/30(火) 18:10 発言
【58065】Re:ダイアログBOXのファイル名リスト neptune 08/9/30(火) 22:08 発言
【58070】Re:ダイアログBOXのファイル名リスト 熊谷隆史 08/10/1(水) 11:10 発言

24047 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free