![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.5ベストアンサー
- 回答日時:
>とすればCOMの初期化はなされたといえるのでしょうか?
>そうでなければどうしたらCOMの初期化はできるのでしょうか?
COMの初期化とは、COMを使う前に、そのスレッドの中でCoInitialize()をコールすることです。
で、スレッドが終了する前に、CoUninitialize()をコール
します。
>既存のキャンセルボタンとOKボタンとツリービューのハンドルを知りたいのですが知る方法はありますか?
今回の事をするにあたり、コントロールのウィンドウハンドルを取得する前に、ボタン等のコントロールIDを知っておいた方がいいですよ。
コントロールIDは固定なので、毎回ウィンドウハンドルを検索するようなロジックは不要になります。
コントロールIDは、VisualStadioをお持ちでしたら、spy++というツールで調べられるんですがね。
なければ、しょうがないんで、取得用のプログラムを作ってあげることになるのかな?
具体的には、ダイアログのウィンドウハンドルを取得して、EnumChildWindowで子ウィンドウを列挙し、
キャプション文字列や、クラス名を取得して該当のウィンドウのハンドルがわかれば
GetDlgCtrlIDでコントロールIDを取得できると思います。
で、プログラムの中でウィンドウハンドルが必要になったらGetDlgItemで取得します。
ちなみにOKボタンは0x0001、TreeViewは0x3741、キャンセルボタンは0x0002でした。(Windows2000で確認)
ありがとうございます。
素性の分からないボタン2つをenumでカットして
新たにボタン等を配置することで決着しました。
そのためにダイアログウィンドウの半分より下の子ウィンドウをすべて除去し(rt.topを使う)除去したあたりに新たに追加コントロールを配置しました。
孫ウィンドウを殺さないように親もチェックです。
No.4
- 回答日時:
>SHBrowseForFolderはコモンダイアログでないみたいですがコモンと同じようにカスタマイズできるのでしょうか?
出来ますよ。
フックプロシージャがあったり、サブクラス化が出来るものは大抵のことが出来ます。
なくても他の方法で工夫次第で可能です。
がんばってみてください。
有名どころのフリーソフトでは、Lhasaのインストーラが独自のボタンをつけてますし。
http://www.forest.impress.co.jp/library/lhasa.html
この回答への補足
ありがとうございます。
この問題で悩んでいる人は多いみたいですね。
bi.lpfn=SHBProc;
bi.lParam=(LPARAM)"C:\\";
として
int CALLBACK SHBProc(HWND hW,UINT
msg,LPARAM,LPARAM lp)
{
switch (msg)
{
case BFFM_INITIALIZED:
SendMessage(hW,BFFM_SETSELECTION,1,lp);
return 0;
}
return 0;
}
とすればCOMの初期化はなされたといえるのでしょうか?
そうでなければどうしたらCOMの初期化はできるのでしょうか?
なかなか気が進まなかったのですがとうとうサブクラス化してしまいました。
ボタンを置く位置を決めるために
既存のキャンセルボタンとOKボタンとツリービューのハンドルを知りたいのですが知る方法はありますか?
No.3
- 回答日時:
Win2000以降でしたらBIF_USENEWUIで出てくるそうです。
参考URL:http://yokohama.cool.ne.jp/chokuto/urawaza/struc …
ありがとうございます。
GetOpenFileNameはファイルでありディレクトリではないので使えないのが残念です。
それに2000でないからBIF_USENEWUIも使えません。
SHBrowseForFolderはコモンダイアログでないみたいですがコモンと同じようにカスタマイズできるのでしょうか?
No.2
- 回答日時:
こんな感じの事をする必要があります。
http://hp.vector.co.jp/authors/VA016117/esccd.html
コモンダイアログ ボタン 追加
なんてキーワードで検索すればごろごろ出てくるでしょう。
参考URL:http://hp.vector.co.jp/authors/VA016117/esccd.html
No.1
- 回答日時:
BIF_USENEWUIフラグを指定した場合はどうでしょうか? また、GetOpenFileName()やGetSaveFileName()を使うという手もあります。
参考URL:http://yokohama.cool.ne.jp/chokuto/urawaza/api/S …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- Windows 10 指定したファイルを任意の範囲のディレクトリ内に上書き保存したい 1 2022/11/24 10:42
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- UNIX・Linux 空のディレクトリで dir を行ったとき 4 2023/05/05 17:54
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- PostgreSQL PostgreSQLで"pg_dumpall -f data.sql"を使ってバックアップしたデータ 2 2022/09/19 08:14
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
ゲームでは結局どっちが良いの?
-
c++/cli .NET Formアプリケー...
-
ExcelVBA Delegate文がエラー...
-
検索の画面がでなくなってしま...
-
親ウインドウにあるOKボタンを...
-
ExcelVBA:フォームの最小化ボ...
-
グラフを別ウィンドウで立ち上...
-
OutlookでRSSフィードやメモの...
-
UWSCで特定のChromeのタブをア...
-
Alt+P,Alt+NをPostmessageで送...
-
EXCEL VBA WindowsAPIの文字列...
-
メッセージをスルー
-
エクセル、最上段の項目だけ固...
-
エクセルで複数のウィンドウ枠...
-
VBA .Value=.Value ?
-
ラジオボタンの初期指定
-
パソコン(windows7)に関して パ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ゲームでは結局どっちが良いの?
-
検索の画面がでなくなってしま...
-
勝手にウィンドウが開いて止ま...
-
VBA .Value=.Value ?
-
ラジオボタンの初期指定
-
作成したウインドウのサイズを...
-
Vba LongPtrについて教えてくだ...
-
Excelの上下を固定したい
-
他のアプリケーションの終了処理
-
【VB2008】 マウス操作の一時的...
-
「&HFFFF」「&H1A」とは?
-
VBで外部プログラムを位置のみ...
-
ExcelのBOOKが消えた!
-
Alt+P,Alt+NをPostmessageで送...
-
UWSCで特定のChromeのタブをア...
-
Console.WriteLine で表示されない
-
MFC ダイアログ上のID取得につ...
-
最大化と最小化ボタン
おすすめ情報