Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.005 c
14-50446
kull
2003-05-29 15:43
2003.06.16
Интересный факт...


14-50494
Marser
2003-05-29 18:57
2003.06.16
Я вернулся! По-настоящему!


1-50305
Jaxtor
2003-06-03 11:32
2003.06.16
Создание алгоритма для CheckBox


3-50241
dorohov
2003-05-22 17:53
2003.06.16
Вопрос по DBGRID


3-50257
kalishenko
2003-04-29 20:16
2003.06.16
Btrieve и Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский