Создаю мастер на основе CPropertySheet.
Необходимо изменить положение кнопок и страниц.
С кнопками проблем нет GetDlgItem( .. {ID_WIZNEXT, ID_WIZBACK, IDCANCEL, ID_WIZFINISH}).
А где найти идентификатор статической линии?
14.12.05 18:12: Перенесено модератором из 'Этюды для программистов' — Кодт
Здравствуйте, 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);
}
}
Оставим так, спасибо за совет!