Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Вниз

Свои компоненты   Найти похожие ветки 

 
CodeMaster ©   (2009-02-09 10:55) [0]

Я пишу программу на чистом API без использования VCL, возникает вопрос как мне создать свои компоненты в API не трогая при этом VCL? На VCL создавать всё гораздо проще TCustomControl помогает, но в API такой расслабухи нету и я теперь не знаю что-делать, подскажите.

Заранее спасибо.


 
Сергей М. ©   (2009-02-09 11:05) [1]

Наследуйся от TComponent


 
CodeMaster ©   (2009-02-09 11:20) [2]

Да но как потом функцией CreateWindowEx вызвать компонент?


 
Rouse_ ©   (2009-02-09 11:25) [3]

В принципе можно посмотреть как это сделано в КОL, там тоже VCL не тянется...


 
Сергей М. ©   (2009-02-09 11:26) [4]


> как потом функцией CreateWindowEx вызвать компонент?


Чавой-то ?
CreateWindowEx не предназначена для "вызова компонентов".
Мало того, ни одна WinAPI-функция знать ничего не знает и знать не может ни о каких "компонентах" - в то время как строгалась Windows, среда Делфи с ее компонентами не существовала вообще или находилась в пуберантном периоде


 
CodeMaster ©   (2009-02-09 11:38) [5]

Ну а тогда каким образом мне вывести на форму компоненты?


 
Anatoly Podgoretsky ©   (2009-02-09 11:40) [6]

> CodeMaster  (09.02.2009 10:55:00)  [0]

АПИ не поддерживает и не совместим с TComponent


 
CodeMaster ©   (2009-02-09 11:40) [7]

вот таким образом создаётся главная форма:
var
wc: TWndClass;
hWindow: HWND;
Msg: TMsg;
begin

wc.lpszClassName := "POGiPlayer";
  wc.lpfnWndProc   := @MainWndProc;
  wc.Style         := CS_VREDRAW or CS_HREDRAW;
  wc.hInstance     := hInstance;
  wc.hIcon         := LoadIcon(0, IDI_APPLICATION);
  wc.hCursor       := LoadCursor(0, IDC_ARROW);
  wc.hbrBackground := (COLOR_WINDOW + 1);
  wc.lpszMenuName  := nil;
  wc.cbClsExtra    := 0;
  wc.cbWndExtra    := 0;
  RegisterClass(wc);
  hWindow := CreateWindowEx(WS_EX_CONTROLPARENT or WS_EX_WINDOWEDGE,
    "POGiPlayer",
    "POGiPlayer - Test Mode",
    WS_VISIBLE or WS_CLIPSIBLINGS or
    WS_CLIPCHILDREN or WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, 0,
    400, 300,
    0,
    0,
    hInstance,
    nil);

  ShowWindow(hWindow, CmdShow);
  UpDateWindow(hWindow);

  while GetMessage(Msg, 0, 0, 0) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
  Halt(Msg.wParam);
end;


 
CodeMaster ©   (2009-02-09 11:40) [8]

Anatoly Podgoretsky ©   (09.02.09 11:40) [6]
Хм тогда вопрос как AIMP это реализовал?


 
Anatoly Podgoretsky ©   (2009-02-09 11:41) [9]

> Rouse_  (09.02.2009 11:25:03)  [3]

В КОL же не используются компоненты!


 
Anatoly Podgoretsky ©   (2009-02-09 11:41) [10]


> CodeMaster ©   (09.02.09 11:40) [7]

Здесь нет вообще формы, в том числе и главной.


 
Anatoly Podgoretsky ©   (2009-02-09 11:43) [11]


> AIMP

Я не знаю кто это такой и что он реализовал, но Билл клялся, что он не будет поддерживать компоненты Дельфи и я ему, до тех пор пока он не купит Дельфи, верю.


 
CodeMaster ©   (2009-02-09 11:43) [12]

Если не трудно дайте ссылочку на KOL , гугл мне какую-то фигню выдаёт


 
Сергей М. ©   (2009-02-09 11:45) [13]


> CodeMaster ©   (09.02.09 11:43) [12]


Чем тебе VCL так насолила ?


 
CodeMaster ©   (2009-02-09 11:48) [14]

Слишком большой размер файла получается.


 
Юрий Зотов ©   (2009-02-09 12:11) [15]

> CodeMaster ©   (09.02.09 11:48) [14]
> Слишком большой размер файла получается.

Это - неизбежная плата за удобство и скорость разработки.

Если размер файла для Вас - главный критерий, то и пишите все на API. Но тогда либо придется забыть про все компоненты, либо написать что-то вроде собственной VCL (или использовать чью-то аналогичную разработку). А "и рыбку съесть, и ног не намочить" - так не бывает.

За все приходится платить. За малый размер файла - ручной работой, а за использование компонентов - размером файла.


 
clickmaker ©   (2009-02-09 12:15) [16]

> [14] CodeMaster ©   (09.02.09 11:48)

"копмонент на АПИ" - это CreateWindow и есть. Регистрируешь свой класс, пишешь оконную функцию, где обработка всех нужных сообщений - и всё, компонент готов )


 
Anatoly Podgoretsky ©   (2009-02-09 12:16) [17]

> CodeMaster  (09.02.2009 11:48:14)  [14]

У тебя проблемы с винчестером? Так купи новый, благо они очень дешевы, я неделю назад прикупид 1.5 терабайта по цене 160 гб пару лет назад. За неделю кончилось место, думаю подождать 2 тб или купить еще 1.5 тб


 
{RASkov} ©   (2009-02-09 12:34) [18]

> неделю назад прикупид 1.5 терабайта по цене 160 гб пару
> лет назад. За неделю кончилось место, думаю подождать 2
> тб или купить еще 1.5 тб

Это не есть хорошо :(
Лучше уметь хранить все на более меньших размерах... ибо свалку устроить проще простого.... главное только место под нее расчищать успевать....

Но я это сказал не в плюс к автору.... сам не понимаю, зачем ради нескольких килобайт(ну пусть даже нескольких тыщ) страдать такой фигней с АПИ.
Считаю, что АПИ нужен совсем для другого, нежели "чисто на нем писать" программы :)


 
Anatoly Podgoretsky ©   (2009-02-09 13:25) [19]

> {RASkov}  (09.02.2009 12:34:18)  [18]

Ты предлагаешь мне пережимать Full HD файлы в AVI по 700 мб? Нафиг я лучше пару новых дисков куплю, чем буду такое изуверство делать.


 
CodeMaster ©   (2009-02-09 15:08) [20]

Слышал такое что если писать на WinApi скорость программы увеличивается в несколько раз, но после прочтения ваших записей я понял что от-того что я напишу на WinApi ничего не изменится, скорость будет зависить оттого как программист напишет программу.

Задам последний вопрос, а если в модулях Controls,ExtCtrls и.т.д. урезать некоторые функции которые мне вообще не нужны, то размер ведь должен уменьшиться?


 
clickmaker ©   (2009-02-09 15:10) [21]

> Слышал такое что если писать на WinApi скорость программы
> увеличивается в несколько раз

скорость разработки уменьшается - вот это точно )


 
CodeMaster ©   (2009-02-09 15:15) [22]

:) Это точно


 
Юрий Зотов ©   (2009-02-09 15:18) [23]

> CodeMaster ©   (09.02.09 15:08) [20]

> если в модулях Controls,ExtCtrls и.т.д. урезать некоторые функции которые
> мне вообще не нужны, то размер ведь должен уменьшиться?

При обычной сборке (без Run-Time пакетов) линковщик Delphi САМ выбросит все неиспользуемые в программе функции.


 
Anatoly Podgoretsky ©   (2009-02-09 15:24) [24]

> CodeMaster  (09.02.2009 15:08:20)  [20]

Ты наверно слышал и такое, что если писать на Ассемблере, то скорость программы увеличивается в несколько раз, так вот это тебе лапшу на уши вешают. Это зависит не от инструмента, а в первую очередь от мозгов.

Если ты не боишься, то урезай.


 
StriderMan   (2009-02-10 16:34) [25]

Пишите на .NET! Экзешник будет меньше раз в сто! В прямом смысле в 100 раз.


 
KSergey ©   (2009-02-10 16:45) [26]

> StriderMan   (10.02.09 16:34) [25]

А еще в дельфи в Project Options на вкладке Packages есть волшебная опция "Build with runtime packages".
Автор (топика), установите ее для проекта с VCL - и восхититесь малым размером екзешника.

Про эту опцию знают только мастера, Борладн специально про нее не рассказывает, а вообще меня сейчас за раскрытие этой информа


 
CodeMaster ©   (2009-02-10 19:51) [27]

Знаю я про эту опцию, уже пробовал её - после установки этого флажка на других компьютерах программа не запускается.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.053 c
11-1198575794
vastani
2007-12-25 12:43
2009.03.29
Прошу учесть и исправить ошибку в компоненте KOLHTTPDownload


2-1233732829
проходил мимо решил зайти
2009-02-04 10:33
2009.03.29
Сортировка данных таблице


2-1233919614
niro
2009-02-06 14:26
2009.03.29
Не получается осуществить переход по ссылке в IE


15-1233064634
IGray
2009-01-27 16:57
2009.03.29
Локализ-я с пом. D2007-D2009 и назойливые предложения сохраниться


15-1232607529
XentaAbsenta
2009-01-22 09:58
2009.03.29
Получить уведомление о всовывании флешки.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский