При создании диалога в VS создается числовой идешник диалога.
В ашник добавляет enum { IDD_...
Глюки с числовыми идешниками запарили, хочется использовать текстовые.
Т.е. этот контруктор:
explicit CDialog(
LPCTSTR lpszTemplateName,
CWnd* pParentWnd = NULL
);
Но тогда enum { IDD_... приходится убирать и из-за этого перестает работать Class wizard, поскольку не может связать класс диалога с шаблоном.
Т.е. все обработчики придется добавлять ручками
Нет ли альтернативного способа объяснить Class wizard'у, какой класс с каким шаблоном связан?
Может есть какой Add-in?
Re: Строковое имя шаблона диалога и Class wizard
От:
Аноним
Дата:
18.01.08 10:26
Оценка:
Здравствуйте, prozaeck, Вы писали:
P>При создании диалога в VS создается числовой идешник диалога. P>В ашник добавляет enum { IDD_...
P>Глюки с числовыми идешниками запарили, хочется использовать текстовые.
Странно... О каких глюках Вы говорите? Я работал в Visual Studio в версиях 4.0, 5.0, 6.0,
2002, 2003 и 2005 и никаких глюков не было.
Re[2]: Строковое имя шаблона диалога и Class wizard
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, prozaeck, Вы писали:
P>>При создании диалога в VS создается числовой идешник диалога. P>>В ашник добавляет enum { IDD_...
P>>Глюки с числовыми идешниками запарили, хочется использовать текстовые. А>Странно... О каких глюках Вы говорите? Я работал в Visual Studio в версиях 4.0, 5.0, 6.0, А>2002, 2003 и 2005 и никаких глюков не было.
Значит Ваши проекты были недостаточно большими.
Тоже пишем на Vcpp с версии 4.0. За все эти годы, не раз убеждался, что большинство всяких примочек, типа классвизарда или автоматической генерации номеров строковых ресурсов, хороши для небольших проектов. Подобные вещи реализованы откровенно не профессионально, и только деградируют с каждой новой версией. В частности, хотел бы предостеречь начинающих программистов, от использования строковых ресурсов в приложениях с большим количеством либов. VS не может обеспечить уникальность идентификаторов в этом случае.
Re[3]: Строковое имя шаблона диалога и Class wizard
Кому интересно. Удалось частично найти решение сабжа.
Допустим есть имя шаблона диалога "SIDD_MYDLG". Именно так, в кавычках, оно задается в свойствах шаблона. Естественно, в resource.h никакого дефайна быть не должно.
В ашник пишем
class CMyDlg : public CDialog
{
public:
CMyDlg (CWnd* pParent) : CDialog("SIDD_MYDLG", pParent){...
В итоге компилятор enum не видит, а Class wizard видит, но только если работать через Properties класса диалога. Если же, например, кликнуть на кнопку в шаблоне, то обработчик не будет добавлен, и откроется форма создания класса диалога. Лично я готов этим пожертвовать.