Динамически создать элемент управления в приложении MFC

По этой ссылке от Microsoft, должна быть возможность определить CButton и указать его родительское окно (CDialog), не имея CButton в качестве члена Dialog, но я не смог этого сделать.

Поэтому, если myButton является членом класса, производного от CDialog (myCDialog), работает следующий код:

BOOL myCDialog::OnInitDialog() {
CDialog::OnInitDialog();
myButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 20, 100, 50), this, 1000);
...
}

Но когда я говорю о динамическом создании, я хочу иметь возможность создавать столько кнопок, сколько мне нужно, динамически (я не могу определить их как членов класса, потому что я не знаю, сколько!)

Я пробовал следующий код в другой класс с указателем на myCDialog в качестве родительского окна, аналогично коду, показанному в ссылке, но он не работает:

CButton myButton;
myButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 20, 100, 50), pmyCDialog, 1000);

Итак, как я могу создавать динамические элементы управления, не определяя их как член класса CDialog?

3

Решение

«(Я не могу определить их как учеников, потому что я не знаю, сколько!)»

Вы можете сделать массив или вектор из CButton или CButton * в качестве члена класса. Присвойте разные ID каждому из них, когда вы вызываете его Create.

1

Другие решения