Использование голого Win32 API для написания GUI
От: Orifiel  
Дата: 24.11.05 13:24
Оценка: +3
Привет всем.

Извините, что слишком часто будирую эту тему, но для меня это
вопрос принципа.

Долгие дебаты на тему Delphi vs VC и .NET vs C/C++ свидетельствуют
о правоте как тех, так и других. Сторонники Delphi и .NET выдвигают
такие аргументы, как скорость разработки и удобство ИСР. Стронники
С/С++ приводят аргументы в пользу высокого быстродействия и малого
объема кода. Непонятным остается одно. Почему, например, при разработке
прогаммного комплекса наподобие filemon или regmon я не могу для написания
управляющей части использовать BCB и VCL без риска быть обвиненным в
профнепригодности. В своих проектах на BCB5 и BCB6 я неоднократно использовал
WinNT native API (ZwLoadDriver, ZwGetSystemInformation, ZwRaiseHardError и др.),
а также сложные SCM API, Crypto API и Setup API. Но хоть убей не пойму, на кой
леший я должен на голом API разрабатывать пользовательский интерфейс. Да мне
проще взать все это из палитры визуальных компонентов, чем сабкласить эти
дурацкие окна или писать хренотень наподобие такой


    BEGIN_MSG_MAP(CBackupDlg)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
        MESSAGE_HANDLER(WM_EB_PRESS, OnEditBrowserCtrlPress)
        MESSAGE_HANDLER(WM_ENTERIDLE, OnEnterIdle)
        COMMAND_ID_HANDLER(IDOK, OnOK)
        COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
        COMMAND_ID_HANDLER(IDC_ASSIGN_PASSWORD, OnAssignPasswordClick)
        COMMAND_RANGE_HANDLER(IDC_RADIO_REPLICA, IDC_RADIO_COMPACT, OnSelectOption)
    END_MSG_MAP()
 
    BEGIN_DDX_MAP(CBackupDlg)
        DDX_TEXT_LEN(IDC_FOLDERPATH, m_szPath, MAX_PATH)
        DDX_TEXT(IDC_PASSWORD, m_bstrPassword)
        DDX_CHECK(IDC_PASSWORD, m_nAssignPassword)
        DDX_RADIO(IDC_RADIO_REPLICA, m_nReplicaOrCompact)
    END_DDX_MAP()

    BEGIN_UPDATE_UI_MAP(CBackupDlg)
        UPDATE_ELEMENT(IDC_ENCRYPT_COMPACT, UPDUI_CHILDWINDOW)
        UPDATE_ELEMENT(IDC_ASSIGN_PASSWORD, UPDUI_CHILDWINDOW)
        UPDATE_ELEMENT(IDC_PASSWORD, UPDUI_CHILDWINDOW)
    END_UPDATE_UI_MAP()



В связи с этим я сделал вывод, что сейчас нет объективных оснований для написания оконного интерфейса на голом API, GTK или WTL. Посему те разработчики, кто его используют, делают это либо для демонстрации собственной крутизны, либо в погоне за гонорарами. Но я допускаю, что в чем-то могу ошибаться. Посему хотел бы услышать разумные доводы в пользу применения вышеприведенных инструментов.

С уважением, Orifiel
-
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.