Створення універсальних ActiveX програм або найкращий стандарт – це той, що ти зміг нав’язати оточуючим., Різне, Програмування, статті

У цій статті ми відправимося в екскурс по історії створення WinRazor SDK. Матеріал, висловлюваний далі заснований на особистому сумному досвіді і суб’єктивній думці автора. Тим, хто тільки збирається почати вивчення програмування, це може допомогти вибрати підходящий інструмент (IDE), а професіонали можуть читати це як худошественний текст і приймати мої поради з продлеванію часу розробки програм як керівництво до дії.

Отже панове, ви хочете створити ActiveX Control? Звичайно так. Тоді задайте собі питання – навіщо? Адже це вимагає значно більших зусиль ніж створення звичайної EXE – програми, та й працювати воно буде повільніше. Ви скажете – для повторного багаторазового використання. А чому не годиться для цього звичайний об’єкт у вашій програмі? На що ви відповісте – щоб дати наше творіння іншим розробникам як готову до використання закриту коробку. І тут я задам вам забійний питання – а чи все (в будь-який чи IDE) її зможуть використовувати? І це вам не кролик, якого ви знайдете в книзі “Основи COM”. Практика використання різних IDE дає невтішний відповідь на це питання.

Отже повернемося в ті часи, коли WinRazor Control був написаний на Visual Basic6. Виглядало це дуже красиво – сторінка коду, простота і зручність візарду (справедливості заради варто помітити, що візард дуже розумний, двосторонній – круто мужики попрацювали) У VB6 і в VC6 все працювало добре. І тут я подумав – а чому б мені не вставити його в С + + Builder 4. Проинсталлировать вдалося, Property Table працює, заряджаю першу функцію, і бачу знаменитий синій екран в Windows 98, перезавантажився в W2k – той скидає задачу. Хочу зауважити, що попередньо розбіжності в типах даних я усунув. Це перше, що ви повинні зробити, якщо хочете, щоб ваша компонента працювала скрізь. Наприклад, якщо ви створюєте уомпоненту в VB, ви не повинні видавати назовні тип Integer, C – конвертори не зможуть конвертувати його в Short за розміром. Тому використовуйте Long.

З усього цього можна зробити висновок, що VB-компоненти гарні тільки в “домашніх” умовах. Другим їх недоліком є ​​швидкодія (хоча не у всіх операціях).

Наступним етапом став повний переклад програми на С (ваш покірний слуга в результаті став непоганим перекладачем між цими мовами).

Створюючи ATL-project на Visual C + + ви повинні вибрати для себе один з двох шляхів – windowed або windowless.

У VB все було windowed (навіть коли invisible at runtime). Використання MFC-ваша особиста справа, перед тим, як вибрати MFC, задайте собі питання – а чого вам не вистачає в ATL і Win API?

Спочатку я створив windowless control. Це вирішує багато проблемм, які виникають при використанні втрачених при цьому можливостей. Наприклад мені хотілося захопити вікно предка, а що я можу захопити, якщо мій контрол не має власного вікна? Є інші способи боротьби з цими проблемами, але зробивши ваш контрол windowed ви отримаєте більш простий і витончений Win API інтерфейс.

З переходом на VC я поимел чимало головного болю з інтерфейсом IDE. Тут вже немає того двостороннього візарду, тут що напишеш пером – не вирубаєш сокирою. З часом я пристосувався вручну редагувати майже все, що створюється візард, проте за цей час чимало “втішних” слів було сказано на адресу цієї IDE.

І що-ж я поимел? – Контрол став працювати пожвавіше, і ось він уже працює в C + + Builder і в Delphi. Ще раз хочу попередити вас щодо ретельного вибору типів даних. Буває, що ваша функція не працює, а ви не отримуєте ніяких повідомлень – причина може бути саме в несумісності типів даних.

І ось моя компонента працює, але хочеться ще чогось накоїти да windowless не дає.

Робимо контрол windowed. І тут починається найцікавіше. Виявляється, що Borland і Microsoft розходяться в думках з приводу – чи треба створювати вікно об’єкта, якщо він Invisible? Вибір Borland на мій погляд більш логічний (не створювати) але меннее зручний для нас. Взагалі вам ніхто не заважає заховати ваш об’єкт в невидиму зону форму. А що робити в Scripting Languages ​​де тільки runtime? Для цього та інших випадків можна зробити функції Show і Hide. Слід брати до уваги, що якщо вікно контрола не створено, то всі функції контрола, пов’язані з його вікном (в першу чергу Events) працювати не будуть.

А що-ж з Borland IDEs?

На мій погляд – це найкраще поєднання зручність – швидкість при великому кількість явних багів і інших глюків, особливо я хочу відзначити проблемми з реєстрацією контролів в IDE. Так після серйозних змін в моєму контролі, мені доводилося вручну редагувати файли проекту клієнта в С + + Builder, так-як система неправильно його редагувала.

Використовувати Delphi або Builder – це ваша справа, різниці в швидкодії я не помітив, я використовую Builder, так-як я найбільше люблю синтаксис С, але це справа смаку.

Я перерахував лише деякі з проблемм, з якими і мені і вам ще доведеться стикатися. Відсутність взаєморозуміння між монстрами – конкурентами іноді підкидає нашому братові додаткову роботу.

Чи погано це?

Кожен раз створюючи новою примочку в програмі для автоматизації чогось я мимоволі ловлю себе на думці, що сам рублю сук, на якому сиджу. За останні роки Microsoft доклала чималих зусиль, щоб (Як висловився один з моїх знайомих) позбавити світ великої кількості поганий роботи. З одного боку – стандарти – це прогресивне явище. Але вони позбавляють нас роботи – так не треба створювати одну програму під 100 операційних систем, або можна скористатися готовим ActiveX замість великої кількості дорогого коду. Залишилося тільки Visual Studio разом з MS Office в Windows включити. З іншого боку мене не перестає радувати високий рівень якості їхніх виробів (ось додати б в Delphi стабільність і весь рівень автоматизації його сина VB, хоча в останньому іноді бракує можливостей).

Як би там не було, ось кілька тез, які не варто забувати нам програмістам, щоб відтягнути термін свого звільнення: постарайтеся вселити своєму начальству, що по-справжньому професійна програма може бути написана тільки на Visual C + +, мотивуючи це тим, що VB – це програма для домогосподарок. Не використовуйте чужих ActiveX Controls (а хто його знає, що там понаписували). Намагайтеся використовувати в своїй програмі якомога більше потенційно несумісних з чим-небудь компонентів. Пишіть код так, щоб наступного разу глянувши на це ви б самі нічого не зрозуміли (незважаючи на коментарии) и.т.д і.т.п. Не мені вас вчити.

Ну от і підійшло до кінця моє ліричний відступ. В найближчому майбутньому постараюся порадувати вас нової (обіцяю – дуже цікавою) статтею: Швидке створення асистента в С + + Builder програмі за допомогою утиліт WinRazor 4.2 SDK.

До зустрічі!

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*