Форум: "Потрепаться";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];
ВнизWinApp рулит Найти похожие ветки
← →
_0$a_ (2003-05-27 23:29) [0]Вот недавно я узнал настоящую прелесть апи
Поздравте
Я создал свое первое окно которое меньше 300 кб
А 9кб
И вот у меня вопрос а как создать кнопку и тд
А ссылку на ресурс даже лучше если б вы дали
ТОЛЬКО не посылайте к Гейтсу :)
А для тех кто не понял прелести Апи ниже исходник
ДА ЭТО КРУТО Я ПРОСТО В АУТЕ
program QosaEd;
uses
Windows, Messages;
const
AppName = "Window1";
(* ----------------------------------------------------------------------------
сигнатура WindowProc
function WindowProc(
Window: HWnd; обработчик окна
AMsg: longint; сообщение
wParam: longint; первый параметр сообщения
lParam: longint; второй параметр сообщения
): longint;
----------------------------------------------------------------------------*)
function WindowProc(Window: HWnd; AMessage, WParam, LParam: Longint): Longint; stdcall; export;
begin
WindowProc := 0;
case AMessage of
wm_size:
begin
MessageBox(window, "Do n t change a size ","goga", mb_OK);
end;
wm_Destroy: // разрушение окна - выход из программы
begin
MessageBox(window, "destroy","goga", mb_OK);
PostQuitMessage(0);
Exit;
end;
wm_create:
begin
MessageBox(window, "create","goga", mb_OK);
end;
wm_move:
begin
MessageBox(window, "Don t Move","goga", mb_OK);
end;
WM_LBUTTONDOWN: // нажатие левой кнопки мыши в области окна
MessageBox(window, "Нажата левая кнопка мыши","goga", mb_OK);
WM_RBUTTONDOWN:
begin
// нажатие правой кнопки мыши в области окна
MessageBox(0, "Нажата правая кнопка мыши","goga", MB_OK);
end;
end;
WindowProc := DefWindowProc(Window, AMessage, WParam, LParam);
end;
{ Регистрация окна }
function WinRegister: Boolean;
var
WindowClass: TWndClass;
(*
TWndClass - структура (packed record) содержит часть информации о типе
окна, которое регистрируется операционной системой
*)
begin
WindowClass.Style := cs_hRedraw or cs_vRedraw;
// адрес процедуры, которая обрабатывает сообщения, посылаемые окну
WindowClass.lpfnWndProc := @WindowProc;
WindowClass.cbClsExtra := 0;
WindowClass.cbWndExtra := 0;
WindowClass.hInstance := HInstance;
WindowClass.hIcon := LoadIcon(0, idi_Application);
WindowClass.hCursor := LoadCursor(0, idc_Arrow);
WindowClass.hbrBackground := HBrush(color_window);
WindowClass.lpszMenuName := nil;
WindowClass.lpszClassName := AppName;
{функция RegisterClass регистрирует окно в операционной системе.
Она возвращает атом (atom) - уникальный в данной системе идентефикатор
по которому ОС будет идентефицировать данное окно.
Если обращение оказывается неудачным функция возвращает 0.
}
Result := RegisterClass(WindowClass) <> 0;
end;
{ Создание окна }
function WinCreate: HWnd;
var
hWindow: HWnd;
begin
(* ----------------------------------------------------------------------------
сигнатура CreateWindow
function CreateWindow(
ClassName: PChar; адрес зарегистрированного имени класса
WindowName: PChar; адрес имени окна
Style: LongInt; стиль окна
X: integer; горизонтальная позиция окна
Y: integer; вертикальная позиция окна
Width: integer; ширина окна
Height: integer; высота окна
WndParent: HWnd; обработчик окна-родителя или владельца
Menu: HMenu; обработчик меню
Instance: THandle; обработчик приложения
Param: Pointer адрес данных создания окна
): HWnd;
----------------------------------------------------------------------------*)
hWindow := CreateWindow(AppName, "Тестовый пример",
ws_OverlappedWindow, 20, 20,
300, 200, 0, 0, HInstance, nil);
if hWindow <> 0 then
begin
ShowWindow(hWindow, CmdShow);
UpdateWindow(hWindow);
end;
Result := hWindow;
end;
VAR
AMessage: TMsg;
hWindow: HWnd;
BEGIN // тело программы
//регистрация главного окна приложения
if not WinRegister then
begin
MessageBox(0, "Ошибка при регистрации окна", nil, mb_Ok);
Exit;
end;
//создание главного окна приложения
hWindow := WinCreate;
if hWindow = 0 then
begin
MessageBox(0, "Ошибка создания окна", nil, mb_Ok);
Exit;
end;
//получить сообщение от ОС
while GetMessage(AMessage, 0, 0, 0) do
begin
//TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
Halt(AMessage.wParam); //остановить программу с кодом завершения AMessage.wParam
END.
← →
xZero (2003-05-28 00:40) [1]Кнопка - это также окно, следовательно CreateWindow/Ex.
ps: подробнее в MSDN.
← →
Song (2003-05-28 08:34) [2]Wow, wow!
← →
Polevi (2003-05-28 09:19) [3]вот это да !
← →
Мое имя (2003-05-28 09:29) [4]вах-вах! круче тебя только яйца!
← →
Axis_of_Evil (2003-05-28 09:43) [5]Удалено модератором
← →
DVM (2003-05-28 11:17) [6]Ваааааааааууууууууууууууу!
← →
Darts (2003-05-28 11:54) [7]И это только начало!
А если без издевательств - бери Чарльза Петзольда, и штудируй его, бери другие барьеры.
← →
МДа.. (2003-05-28 16:24) [8]Удалено модератором
← →
jonni (2003-05-28 17:17) [9]>И это только начало!
>А если без издевательств - бери Чарльза Петзольда, и штудируй ?
>его, бери другие барьеры.
>
A GDE EGO VZYAT"???????????/
← →
МДа.. (2003-05-28 21:04) [10]
> A GDE EGO VZYAT"???????????/
http://www.ya.ru - ishi tam, naprimer
← →
Nick Denry (2003-05-28 21:31) [11]Поверь я рад за тебя \, сам так же начинал, и офигевал от размеров и "некоторой" избыточности кода в VCL, а так же возможности писать самому, используя только ресурсы операционной системы и без (относительно) лишнего кода. на первое время тебе очень поможет этот сайт, этот справочник.
http://www.soobcha.ru/rushelp,
и еще www.api.wallst.ru
а уже затем SDK и MSDN. Ищи и пользуйся............
← →
_0$a_ (2003-05-28 23:53) [12]Спасибо Nick Denry © и xZero ©
А от остальных а особо от (а ладно )
никогда ничего не дождешся
Ну шуты надо везде!!!!
← →
VMcL (2003-05-29 03:10) [13]Радуюсь за человека с высшим (как указано в анкете) образованием, который узнал, что можно, оказывается, на WinAPI писать полноценные приложения. Вот это новость!
P.S. В "орехи", однозначно :D
← →
Думкин (2003-05-29 05:09) [14]Да, конечно.
И вот смотришь на этих "дебилоидов" из Борланда или Майкрософт и думаешь - "а нафига?"
Ведь вот вполне полноценное и устойчивое приложение - всего 9 кг.
И почему ехе Ворда такой тяжелый и еще куча ДЛЛ к нему, на какого черта ВКЛ? Вот истиный путь дзен.
Мне рассказывали про парня, который только в армии узнал как можно облегчить определенную жизнь определенными действиями - так он всем потом объяснял как это, и как это здорово.
Все пока.
← →
Palladin (2003-05-29 06:33) [15]
> никогда ничего не дождешся
а что ты ожидал?
ты бы еще в lamborgini послал эскиз изобретенного тобой велосипеда...
← →
Dok_3D (2003-05-29 10:38) [16]Ладно, написал ...
А в чем ты выиграл ? Только в размере ?
Сколько времени потерял и еще потеряешь ...
А разница в 291 килобайт, поверь мне, не критична.
← →
Nick Denry (2003-05-29 21:17) [17]2>Dok_3D ©
Поверьте народ, дело не в килобайтах. Когды на VCL со сторонними конмпонентами пишешь глюки........ А потом свалить все на "бедного" Билли.... кторой виноват лишь в том, что у некоторых руки кривые............
ТАК ВОТ WINAPI - действительно рулит, и при хорошем его знании и готовых примерах создание программ может занимать не более получаса........ И потом в АПИ известно, что отлаживать, а в внутренние глюки VCL - вот это действительно мастдай! в крайнем случае (если время очень надо)........ то есть библиотека KOL&MCK - гремучая смесь винАПИ и ассемблера...... и вообще надо учиться у тех , кто на АСМе пишет....... Они хотябы знают, что делают!
← →
Palladin (2003-05-29 22:01) [18]
> Nick Denry © (29.05.03 21:17)
ты что хотел сказать что остальные и понятия не имеют чем они занимаются?
← →
mike-d (2003-05-29 22:06) [19]>и вообще надо учиться у тех , кто на АСМе пишет....... Они хотябы знают, что делают!
Точно. Особенно симпатично смотрятся написанные на "АСМе" разного рода бухгалтерские и банковские системы...
← →
Nick Denry (2003-05-29 22:34) [20]2>Palladin ©2
> ты что хотел сказать что остальные и понятия не имеют чем
> они занимаются?
Нет, не это, а то что использует твоя программа непосредственно из (от) опреционной системы, если она написана на ВЦЛ толком и не узнаешь....... Много оффкода и прочей ненужной фигни.... на АПИпросто нужно уметь писать.......
2>mike-d ©
>
> Точно. Особенно симпатично смотрятся написанные на "АСМе"
> разного рода бухгалтерские и банковские системы...
Не точно...... Я же не говорил, ЧТО RAD технологии не нужны..... Но они, как раз Нужны Для Задач Такого Типа Как
разного рода бухгалтерские и банковские системы... и базы данных,конечно каждый пишет на том, что ему нравиться.... Но это не факт, что фоновые утилиты (например) надо писать с VCL.....
Или программы критичные к скорости выполнения........
Так что в пинципе завсит от конкретной задачи......
А те кто пишет на АСМе дейстьвительно знают, что, и главное как они делают...... И базу данных, написанную на АСм, я видел, так что личное дело кажного.......
← →
Плохой человек (2003-05-29 22:38) [21]ИМХО и только ИМХО чушь всё это... ИМХО 21 век ИМХО.
← →
zzet (2003-05-29 22:41) [22]>Думкин © (29.05.03 05:09) Мне рассказывали про парня, который только в армии узнал как можно облегчить определенную жизнь определенными действиями - так он всем потом объяснял как это, и как это здорово.
:-) Сильно сказано. Прям про АПИ.
← →
TCrash (2003-05-30 00:52) [23]А я вот посмотрю как твоя прога будет работать в Windows (Doors) 2006 :-)))
ты туда хоть проверку на тип ОС запихни.
Да и вообще, скажи ка, сколько она хавает ОЗУ. Уж поверь, в наше время объем винта в данном случае роли не играет. А на счет быстродействия - вот примерный код как это сделать без АПИ
procedure p1;
begin
Form1:=TForm1.Create;
Form1.Show;
Button1.Create(Form1);
// intializing properties of Button1
end;
по быстродействию - те же яйца, только в профиль.
А теперь думай.
← →
TCrash (2003-05-30 00:53) [24]К стати, Delphi, по большому счету, так и делает.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.007 c