“保存”でテキストを設定する方法Windowsのファイルダイアログのボタン?

StackOverflow https://stackoverflow.com/questions/612119

  •  03-07-2019
  •  | 
  •  

質問

「保存」にテキストを設定しようとしています。 Windowsのボタン" Save file as ..."ダイアログ。

フックを設定し、メッセージを受信し、ボタンを見つけました(nb。" GetWindowText()"を呼び出すと"& Save"が表示されるため、右ボタン)。

次に" SetWindowText()"を使用してテキストを変更しました(そして、それをチェックするために" GetWindowText()"と呼ばれます-テキストは正しいです。)

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

「キャンセル」を変更できますまったく同じコードを使用するボタン-問題ありません。 " Save"の特別な点ボタン?どうすれば変更できます。

コード(価値がある場合):

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"
  }
}
役に立ちましたか?

解決

ようやく機能しました...

"保存"で面白いことが起こっていると確信しています。ボタンをクリックしますが、このコードは送信に取り組みます:

// I replace the dialog's WindowProc with this
static WNDPROC oldProc = NULL;
static BOOL CALLBACK buttonSetter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    // Set the button text on every window redraw....
    if (msg == WM_ERASEBKGND) {
        SetDlgItemTextW(hwnd,IDOK,L"OK");
    }
    return oldProc(hwnd, msg, wParam, lParam);
};

// This is the callback for the GetWriteName hook
static UINT_PTR CALLBACK GWNcallback(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HWND dlg = GetParent(hwnd);
    if (msg == WM_INITDIALOG) {
        oldProc = (WNDPROC)GetWindowLongPtr(dlg, GWL_WNDPROC);
        if (oldProc !=0) {
            SetWindowLongPtr(dlg, GWL_WNDPROC, (LONG)buttonSetter);
        }
    }
    // We need extra redraws to make our text appear...
    InvalidateRect(dlg,0,1);
}

他のヒント

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

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

SetWindowTextを直接混乱させるのではなく、CDM_SETCONTROLTEXTメッセージを使用してテキストを設定します。つまり、

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top