Вопрос по CPropertySheet
От: garish  
Дата: 14.12.05 09:29
Оценка:
Создаю мастер на основе CPropertySheet.
Необходимо изменить положение кнопок и страниц.
С кнопками проблем нет GetDlgItem( .. {ID_WIZNEXT, ID_WIZBACK, IDCANCEL, ID_WIZFINISH}).
А где найти идентификатор статической линии?

14.12.05 18:12: Перенесено модератором из 'Этюды для программистов' — Кодт
Re: Вопрос по CPropertySheet
От: BitField Украина http://lazy-bitfield.blogspot.com
Дата: 14.12.05 11:32
Оценка:
Здравствуйте, garish, Вы писали:

G>Создаю мастер на основе CPropertySheet.

G>Необходимо изменить положение кнопок и страниц.
G>С кнопками проблем нет GetDlgItem( .. {ID_WIZNEXT, ID_WIZBACK, IDCANCEL, ID_WIZFINISH}).
G>А где найти идентификатор статической линии?

Во-первых: это явно не в этюды(наверное, в WinAPI/MFC)
Во-вторых: Используйте Spy++
В-третьих: По-моему, у нее нет идентификатора (он у нее IDC_STATIC = -1, как и у всех статиков). Единственный вариант к ней добраться -- перебор дочерних окон и проверка их положения -- если находится в том-же месте и имеет те-же размеры -- значит, вот она. Но это ИМХО.
Re[2]: Вопрос по CPropertySheet
От: garish  
Дата: 14.12.05 13:05
Оценка:
Здравствуйте, BitField, Вы писали:

BF>Здравствуйте, garish, Вы писали:


G>>Создаю мастер на основе CPropertySheet.

G>>Необходимо изменить положение кнопок и страниц.
G>>С кнопками проблем нет GetDlgItem( .. {ID_WIZNEXT, ID_WIZBACK, IDCANCEL, ID_WIZFINISH}).
G>>А где найти идентификатор статической линии?

BF>Во-первых: это явно не в этюды(наверное, в WinAPI/MFC)

BF>Во-вторых: Используйте Spy++
BF>В-третьих: По-моему, у нее нет идентификатора (он у нее IDC_STATIC = -1, как и у всех статиков). Единственный вариант к ней добраться -- перебор дочерних окон и проверка их положения -- если находится в том-же месте и имеет те-же размеры -- значит, вот она. Но это ИМХО.

В afxres.h есть следующие строки:

// Property Sheet control id's (determined with Spy++)
#define ID_APPLY_NOW                    0x3021
#define ID_WIZBACK                      0x3023
#define ID_WIZNEXT                      0x3024
#define ID_WIZFINISH                    0x3025
#define AFX_IDC_TAB_CONTROL             0x3020


Spy++ показал ID 0x3026. По этому идентификатору ничего нет. Но по коду все проходит без ошибок и результат тот что нужен.

    #define ID_WIZLINE                      0x3026
    ...

    CWnd *pWnd = NULL;
    int ids [] = {ID_WIZNEXT, ID_WIZBACK, IDCANCEL, ID_WIZFINISH, ID_WIZLINE };
    for( int i =0; i < sizeof(ids)/sizeof(int); i++) {
        pWnd = GetDlgItem(ids[i]);
        if (pWnd != NULL) {
            pWnd->GetWindowRect(&rcDlgCtrl);
            rcDlgCtrl.left = rcDlgCtrl.left - nDislocation;
            rcDlgCtrl.right = rcDlgCtrl.right - nDislocation;
            rcDlgCtrl.top = rcDlgCtrl.top - nDislocation;
            rcDlgCtrl.bottom = rcDlgCtrl.bottom - nDislocation;
            ScreenToClient(&rcDlgCtrl);
            pWnd->MoveWindow(rcDlgCtrl);
        }
    }


Оставим так, спасибо за совет!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.