tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルSHBrowseForFolderのリサイズイベントの取得
記事No6090
投稿日: 2007/08/13(Mon) 10:49
投稿者Edward
コモンダイアログをAPI(SHBrowseForFolder等)で呼び出しています。
コモンダイアログのリサイズイベントって取得出来ないものでしょうか?

何方か御指導下さいますよう、よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: SHBrowseForFolderのリサイズイベントの取得
記事No6092
投稿日: 2007/08/14(Tue) 01:49
投稿者Blue
BFFM_INITIALIZEDでサブクラス化すればWM_SIZEのメッセージを処理できます。

[ツリー表示へ]
タイトルRe^2: SHBrowseForFolderのリサイズイベントの取得
記事No6101
投稿日: 2007/08/20(Mon) 13:08
投稿者Edward
Blue様
御指導有難う御座います。

> BFFM_INITIALIZEDでサブクラス化すればWM_SIZEのメッセージを処理できます。


以下の様にコールバック関数を定義しようと思いましたが。

<DllImport("user32.dll")> _
Private Shared Function SetWindowLongW(ByVal hwd As IntPtr, ByVal nIndex As Integer, ByVal dt As Integer) As Integer
End Function

Public Function BrowseCallbackProc(ByVal hWnd As IntPtr, ByVal uMsg As Integer, _
                                   ByVal lParam As Integer, ByVal lpData As Integer) As Integer
    If uMsg = BFFM_INITIALIZED Then
        OldWndProc = GetWindowLongW(hWnd, GWL_WNDPROC)
        SetWindowLongW(hWnd, GWL_WNDPROC, AddressOf WndProc)

以下の様なコンパイルエラーが出ます。
'Integer'は、デリゲート型でないため、'AddressOf'式を'Integer'に変換できません。

どのように宣言するべきなのでしょうか。
それとも、AddHandler等を使って宣言するべきなのでしょうか


職場のWeb環境では広告の入っているサイト(殆どそうだよね)は見れないよう
制限が掛かっている事も有り調べるのにも難儀しております。

どなたか御指導下さいますよう、よろしくお願いいたします。

[ツリー表示へ]
タイトルRe^3: SHBrowseForFolderのリサイズイベントの取得
記事No6102
投稿日: 2007/08/20(Mon) 13:25
投稿者Blue
><DllImport("user32.dll")> _
>Private Shared Function SetWindowLongW(ByVal hwd As IntPtr, ByVal nIndex As >Integer, ByVal dt As Integer) As Integer
>End Function
の最後の引数の型をDelegate型にしてあげればいいです。

参考
http://msdn2.microsoft.com/en-us/library/kkasf56d(vs.71).aspx

# レスが遅くなるなら一言書いてもらえると助かります。

[ツリー表示へ]
タイトルRe^4: SHBrowseForFolderのリサイズイベントの取得
記事No6103
投稿日: 2007/08/20(Mon) 14:23
投稿者Edward
Blue様

> 参考
> http://msdn2.microsoft.com/en-us/library/kkasf56d(vs.71).aspx
有難う御座います、おかげで。解決いたしました。

> # レスが遅くなるなら一言書いてもらえると助かります。
御足労かけて申し訳御座いません。

[ツリー表示へ]