SHFileOperationのフォーカス

[戻る]
てっぺい [E-Mail] 2008/09/02(火) 12:34:41
SHFileOperationのファイルの上書きコピーなんですが
デフォルトでは上書しますか? "はい(Y)" にフォーカスがあたってます。

このフォーカスを"いいえ(N)"に移動させてやりたいのです。
アドバイス宜しくお願い致します。

環境 XP, C++Builder

... 2008/09/03(水) 09:09:55
>C++Builder

ここは、「VC++」ラウンジ ですよ?

てっぺい [E-Mail] 2008/09/03(水) 10:06:19
申し訳ございません。

WIN32API関数だから
VC++でもC++Buiderでもたいして変わらないと思い
質問してしまいました。

シャノン 2008/09/03(水) 11:25:26
いやいや、C++ Builder 固有のライブラリの話題ならともかくとしても、
Win32 API の話ならどっちでも変わんないでしょうし、C++ Builder 専門の
掲示板を探せってのも酷な話じゃないですかね。

本題には答えられないで申し訳ないですが。
# フックのような泥臭い方法なら可能かもしれませんが…

FUKU 2008/09/03(水) 12:16:10
SHFileOperation()にはデフォルトボタンのオプションが見当たらないので
おそらく無理な気がします。

もし無理矢理やるとするなら、例えば、
1. SHFileOperation()の直前にタイマを起動
2. OnTimer()で上書き確認ダイアログのウィンドウを取得
3. 更に、"はい(&Y)"と"いいえ(&N)"ボタンのウィンドウを取得
4. 「はい」ボタンからBS_DEFPUSHBUTTONスタイルを除去
5. 「いいえ」ボタンにBS_DEFPUSHBUTTONスタイルを付加してフォーカス設定

て感じでしょうか。使用するAPIとしては、
SetTimer()
KillTimer()
FindWindowEx()
GetWindowLong()
SetWindowLong()
SetFocus()
辺りで。はずしてたらスイマセン^^;

てっぺい 2008/09/04(木) 08:57:49
シャノン様FUKU様
アドバイス有難うございます。

フックにせよウィンドハンドルにせよ
ちょっと私には時間がかかりそうなので
自前でファイルの有無をチェックし上書き"する/しない"を警告する画面を表示する事で
撮り合えず回避する事にしました。

余裕があれば上記の方法で取組んでみたいと思います。

古いスレッドには追加発言できません。