Замена кнопки IDCANCEL на кнопку IDCLOSE в соответствующей таблице с учетом локализации - PullRequest
0 голосов
/ 09 ноября 2018

Это может звучать как глупый вопрос. Я знаю, что CMFCPropertyPage имеет метод CancelToClose, но я не могу найти аналог для объекта листа.

Я хочу, чтобы кнопка «Отмена» всегда была «Закрыть» и надеялась сделать это в объекте листа.

Это единственный способ сделать это, позвонив по номеру CancelToClose на каждой из страниц?

Я прочитал это и теперь понимаю, что я все равно не хочу.

Вот что я хочу на своем листе:

  1. Пользовательская кнопка Предварительный просмотр .
  2. A Кнопка закрытия .

Кнопка предварительного просмотра будет слева от кнопки закрытия. Я нашел руководство по добавлению пользовательской кнопки.

Для кнопки Закрыть я не уверен, что делать.

Обновление

Итак, на данный момент у меня есть:

Sheet

Таким образом, он имеет пользовательскую кнопку (там, где находится существующая скрытая кнопка IDOK). И у него есть кнопка IDCANCEL. Но я хочу, чтобы кнопка была «Закрыть».

Я знаю, что могу использовать SetWindowText, но я думаю о локализации, поэтому я подумал, что лучше.

1 Ответ

0 голосов
/ 10 ноября 2018

Вот так я и решил эту проблему.Я сейчас называю этот код с CMFCPropertySheet::OnInitDialog():

void CVisitsRotaPropertySheet::SetupButtons()
{
    CRect rctOK, rctCancel;
    CString strButtonText;

    // Get the position if the IDOK button
    GetDlgItem(IDOK)->GetWindowRect(rctOK);
    ScreenToClient(rctOK);

    // Get the position of the IDCANCEL button
    GetDlgItem(IDCANCEL)->GetWindowRect(rctCancel);
    ScreenToClient(rctCancel);

    // Hide the IDCANCEL button
    GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE);

    // Move the IDOK button to be in the same place as the IDCANCEL button
    GetDlgItem(IDOK)->MoveWindow(rctCancel);

    // Create the PREVIEW button in the original location of the IDOK button
    ENSURE(strButtonText.LoadString(IDS_STR_PREVIEW));
    m_btnPreview.Create(strButtonText,
        BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, rctOK, this, IDC_BUTTON_PREVIEW);
    m_btnPreview.SetFont(GetFont());
}

Приведенный выше код настраивает кнопки по своему желанию.Затем в моих CMFCPropertyPage::OnInitDialog() обработчиках я вызываю CancelToClose().

Результат:

With custom buttons

...