投稿日 | : 2003/04/11(Fri) 04:15 |
投稿者 | : peta |
Eメール | : |
URL | : |
タイトル | : Re:コモンダイアログ... |
> 最初 If 文をコメントアウトして取得したIDと同じIDが取得できhwnd も取得できましたが
> やはり、Call SendMessage(hDlg, WM_COMMAND, &H702C, ByVal 0&) でも詳細にできません
> でした。hDlg の部分を変更しても同じくなにも変化ありませんでした。
Win98も同様に、LOWORD(cwp.wParam) = &H702 が検出されました。
但し、hwnd は、"SHELLDLL_DefView"クラスの hwndDef です。
試しに、Call SendMessage(hDlg, WM_COMMAND, &HA004, ByVal hwndTB)
の代わりに、Call SendMessage(hwndDef, WM_COMMAND, &H702C, ByVal 0&)
を使用したら、詳細表示されました。
もし、これでもダメでしたら、リストビューのビュースタイルを直接変更する方法
Call SetLVViewStyle(hwndLV)
があります。但し、有効なのは初期表示のみです。
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const LVS_TYPEMASK = &H3&
Private Const LVS_REPORT = &H1&
Private Sub SetLVViewStyle(ByVal hwndLV As Long, _
Optional ByVal dwViewStyle As Long = LVS_REPORT)
If (dwViewStyle < 0 Or dwViewStyle > 3) Then Exit Sub
If (hwndLV = 0) Then Exit Sub
Dim dwStyle As Long
dwStyle = GetWindowLong(hwndLV, GWL_STYLE)
If ((dwStyle And LVS_TYPEMASK) <> dwViewStyle) Then
dwStyle = (dwStyle Xor LVS_TYPEMASK) Or dwViewStyle
Call SetWindowLong(hwndLV, GWL_STYLE, dwStyle)
End If
End Sub