3

Windowsの「名前を付けてファイルを保存...」ダイアログの「保存」ボタンにテキストを設定しようとしています。

フックをセットアップし、メッセージを受信し、ボタンを見つけました (注: " GetWindowText()" を呼び出すと、"&Save" が表示されるので、それが正しいボタンであることがわかります)。

次に、" " を使用してテキストを変更しましたSetWindowText()(そして " GetWindowText()" を呼び出して確認しました - テキストは正しいです)。

しかし...ボタンにはまだ「保存」と表示されています。

まったく同じコードを使用して「キャンセル」ボタンを変更できます-問題ありません。「保存」ボタンの何が特別なのですか?どうすれば変更できますか。

コード(価値のあるもの):

static UINT_PTR CALLBACK myHook(HWND hwnd, UINT msg, WPARAM, LPARAM)
{
  if (msg == WM_INITDIALOG) {
    wchar_t temp[100];
    HWND h = GetDlgItem(GetParent(hwnd),IDOK);
    GetWindowTextW(h,temp,100);     // temp=="&Save"
    SetWindowTextW(h,L"Testing");
    GetWindowTextW(h,temp,100);     // temp=="Testing"
  }
}
4

3 に答える 3

0

テキストを設定した後、おそらくウィンドウを再描画する必要があります。

テキストを設定した後、 UpdateWindow() を呼び出してみてください。

于 2009-03-04T19:59:33.847 に答える
0

SetWindowText を直接操作するのではなく、CDM_SETCONTROLTEXT メッセージを使用してテキストを設定します。

SendMessage(hwnd, CDM_SETCONTROLTEXT, IDOK, L"Testing");

http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspxには、開く/保存ダイアログのカスタマイズに関する詳細があります。

于 2009-03-04T20:13:23.330 に答える