을 설정하는 방법에 텍스트"save"버튼을에서 Windows 파일을 대화?

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

  •  03-07-2019
  •  | 
  •  

문제

나가려고 설정 텍스트"save"버튼을 창의"파일로 저장..."화입니다.

나는 설정의 후크,메시지를 수신,발견 버튼(nb.If I call"GetWindowText()"나는"저장"그래서 나는 그것의 오른쪽)이 포함되어 있습니다.

다음 변경 텍스트"를 사용하여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(후)설정 텍스트입니다.

사용 CDM_SETCONTROLTEXT 을 설정하는 메시지에 텍스트 보다는 오히려 혼란 SetWindowText 직접,즉

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

http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspx 에 대한 더 많은 사용자 정의 열기/저장 대화 상자

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top