![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
TarasBer |
![]()
Сообщение
#1
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
В общем, меня тоже стал угнетать вид 300-килобайтового екзешника, состоящего из голой формы, поэтому решил и я попробовать себя в более низкоуровневом программировании.
После ковыряний в гугле и долгих блужданий по таинственным и запутаннным лабиринтам VCL я таки родил то, что прикладываю к проекту. Итак, вопросы. 1. Иногда при запуске выдаёт ошибку 201. Конкретно - в процедуре WinAPI.CreateEdit на строчке, меняющей шрифт. 2. Если в системе поставить галочку "отображать содержимое окна при перетаскивании", то редактор очень мерцает при изменениях размера. Отлов сообщения wm_EraseBkgnd помог не полностью - если в поле ввода ввести много текста, то видно, как текст мигает. Заметил, что в Микрософте при написании Блокнота и Пейнта об этом не парились, а вот с ВордПадом - парились. 3. Как сделать полю ввода стандартную рамочку. Впрочем, та, что вышла, мне нравится гораздо больше. 4. Забавный нюанс - если поле ввода с двумя полосами прокрутки подогнать под размер окна, то в правом нижнем углу сам собой появится треугольничек для изменения размера. 5. ShortCut для главного меню. Если подчёркивания через & ловит система, то F2 итд - нет (как я понял из VCL, обрабтка этих кнопок делает сама программа). Однако, непонятно, какое сообщение ловить. Если перевести фокус на поле ввода и нажать F2, то программа не получает вообще никакого сообщения (как видно по содержимому консоли, введённой тут только для изучения сообщений). Также непонятно, что ловить, чтобы узнать, что "файл *** изменён" (чтобы задавать глупые вопросы пользователю). 6. Диалоги открытия/сохранения (чем они вообще отличаются?). У меня с ними вроде всё хорошо, но галочка "только чтение" мне не нравится, лишняя она там. И я пока ничего не проверял по поводу того, сохраняется ли корневой каталог при их использовании. Прикрепленные файлы ![]() -------------------- |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Чтобы всё по-честному. Для общего развития. Ага.Ну, раз по-честному - значит слушай... 1. Начнем с того, что ты некорректно описываешь главную функцию окна. Что это за прототип? Цитата function fEditorWndProc(Handle: HWND; Message: word; WParam, LParam: longint): longint; stdcall; ? Это неправильно описанная функция окна. Если уж по-честному - то описывай ее как положено, привыкай сразу, чтоб потом не переучиваться: function fEditorWndProc(Handle: HWND; Message: UINT; 2. Цитата Я так понял, горячие клавиши только через расстановку ловушек на клавиатуру? RegisterHotKey - это один способ, второй я уже описывал: создавать меню так:MainMenu MENU myAccels := LoadAccelerators(hInstance, 'myAccel'); Если ты собрался писать на чистом API - то все, что ты натворил в своем проекте можно уложить в сотню строк. В одну сотню, понимаешь? Причем программа будет хорошо структурированной и понятной с первого взгляда. Если же ты ушел от VCL, чтобы изобрести "свою" VCL - то я подожду, пока ты наиграешься с этим, и потом начнешь задавать вопросы либо о чистом WinAPI, либо о стандартной Дельфийской VCL. В мутантах разбираться у меня нет никакого желания. Твой, практически ничего не делающий, код из первого сообщения компилируется уже в 126К на Дельфи 2009. Код, написанный на чистом WinAPI уложится в 50К. Ну, и от чего ты ушел и куда пришел? Будешь добавлять "фичи" - размер твоего EXE-шника будет расти как на дрожжах, и станет больше VCL-ного как пить дать. Хочешь продолжать с созданием своих неизвестно зачем понадобившихся классов - продолжай заниматься непонятно чем. Только предупреди, чтоб я мог знать, стоит ли сюда заходить или проходить мимо... |
![]() ![]() |
![]() |
Текстовая версия | 14.07.2025 13:30 |