Когда я программно создаю немодальное диалоговое окно из идентификатора ресурса диалога, я использую следующий код:
CDialogEx myDialog(IDD_DIALOG1, this);
...
myDialog.Create(IDD_DIALOG1, this);
Можно видеть, что это не очень практично, так как необходимо передать идентификатор диалога дважды. Я понял что-то не так в создании диалога? Есть ли способ избежать этого повторения?
По какой причине MF C class CDialogEx
предоставляет конструктор
CDialogEx(UINT nIDTemplate, CWnd* pParent=NULL);
, но также унаследованный метод
virtual BOOL CDialog::Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
что заставляет меня повторить ID диалога?
Причина в том, что я хочу получить собственный класс myDialogClass
из CDialogEx
, но не хочу назначать идентификатор в этой точке. Можно ли было бы передать фиктивный идентификатор конструктору CDialogEx
? Я хочу назначить идентификатор при создании диалогового окна, а не до этого.
class MyDialogClass: public CDialogEx{
...
public:
MyDialogClass(CWnd* pParent=NULL):CDialogEx(DUMMY_ID, pParent){}
}
Кроме того, я хочу извлечь свой класс диалога в собственную библиотеку (библиотека расширений MF C) и использовать его в некоторых другой код. Мой класс диалога предоставляет дополнительную память D C для обычного D C, но это может быть любая другая функциональность. Я хочу использовать эту дополнительную функциональность в нескольких контекстах.