![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Минимальное оконное приложение на Delphi 1.0 с использованием Win [D1]
Так себе © (2006-08-23 00:23:00)Как создать мин. приложение в первой версии Дельфи минуя при этом директиву stdcall?
Чапаев (2006-08-26 08:37:00) [1]> обложка была в бело-синих тонах
В жёлто-синих, я бы сказал. Хотя и белого немало.
ЗЫ. Первое сообщение отправлено по ошибки, не сочтите за флуд...
Чапаев (2006-08-26 08:36:00) [2]> Кто-то, когда-то её у меня заиграл.
Не я! ;-)
Германн (2006-08-26 01:10:00) [3]
> Перепечатываю (творчески) пример из А Фёдоров, Д. Рогаткин
> "Borland Pascal в среде Windows".
>
Помню ту книгу.Кто-то, когда-то её у меня заиграл. Свою первую программку для Винды на BPW писал с её помощью. Сейчас помню только, что обложка была в бело-синих тонах. :-(
Чапаев (2006-08-25 23:40:00) [4]Ноябрь 1992...
Other unknow what © (2006-08-25 23:19:00) [5]Спасибо за пример! Когда была написана книга авторов А Фёдоров, Д. Рогаткин "Borland Pascal в среде Windows"?
Чапаев (2006-08-25 08:25:00) [6]> Дмитрий Иванович
В миру -- Дмитрий Николаевич. ;-)
Перепечатываю (творчески) пример из А Фёдоров, Д. Рогаткин "Borland Pascal в среде Windows".
program HelloWin;
uses Windows, Messages;
const AppName='WinMin';
function WindowProc(Wnd:HWND; Msg, WParam:Word; LParam:LongInt):LongInt;export;
begin
WindowProc:=0;
case Msg of
WM_DESTROY:
begin
PostQuitMessage(0);
Exit;
end;
end;
WindowProc:=DefWindowProc(Wnd, Msg, WParam, LParam);
end;
var
Window:HWND;
Msg:TMsg;
WinClass:TWndClass;
begin
if HPrevInst=0 then begin
FillChar(WinClass,SizeOf(WinClass),0);
WinClass.HInstance:=HInstance;
with WinClass do begin
Style:=CS_HREDRAW or CS_VREDRAW;
lpfnWndProc:=@WindowProc;
hIcon:=LoadIcon(0, IDI_APPLICATION);
hCursor:=LoadCursor(0, IDC_ARROW);
hbrBackground:=GetStockObject(WHITE_BRUSH);
lpszClassName:=AppName;
end;
if not RegisterClass(WinClass) then
Halt(255);
end;
Window:=CreateWindow(AppName,
'Hello',
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,
0,
HInstance,
nil);
ShowWindow(Window, SW_SHOW);
UpdateWindow(Window);
while GetMessage(Msg,0,0,0) do begin
TranslateMessage(Msg);
DispatchMesage(Msg);
end;
Halt(Msg.WParam);
end.
guav (2006-08-25 01:54:00) [7]Message вроде тоже Word. И вообще тем у кого сей раритет не установлен написать рабочий win16 код создания окна и цикла выборки сообщений будет затруднительно - из-за давности ухода этого всего.
Тут проще запустить Delphi (без параметров) и использовать созданный автоматом код - это будет почти такое же пустое окно.
Германн (2006-08-25 01:39:00) [8]Блин!
> Кинь ему Дмитрий Иванович!
Какой чёрт меня дёрнул за руку? Конечно же Василий Иванович!:-)
Германн (2006-08-25 01:37:00) [9]
> Так себе (24.08.06 23:07) [9]
>
> Родитель (Чапаев) кинь пример и все на этом! (От начало
> и до конца)
> Чапаев © (24.08.06 08:28) [6]
>
> > И всё равно работать не будет.
>
> Нуууу, может и не будет -- из-за других ошибок по тексту.
> Но вообще в древних версиях Делфи и в Паскале для Виндовс
> функции обратного вызова специфицировались именно как export.
>
>
> Чапаев © (24.08.06 12:41) [8]
>
> Кстати, да. WParam=Word в данном случае.
Кинь ему Дмитрий Иванович! Пусть успокоится! (С миром) :-)
Ему же "так себе" "всё по-фигу"! Лишь бы пример был. А потом он придумает себе другой дурацкий ник и будет спрашивать "другое не знаю что".
Так себе (2006-08-24 23:07:00) [10]Родитель (Чапаев) кинь пример и все на этом! (От начало и до конца)
Чапаев (2006-08-24 12:41:00) [11]Кстати, да. WParam=Word в данном случае.
DrPass (2006-08-24 12:25:00) [12]Не будет - как минимум, из-за
> function WindowProc(Hwn,msg,wpr,lpr: Longint): Longint;
> stdcall;
wParam в Win16 имел двухбайтовый целый тип.
Чапаев (2006-08-24 08:28:00) [13]> И всё равно работать не будет.
Нуууу, может и не будет -- из-за других ошибок по тексту. Но вообще в древних версиях Делфи и в Паскале для Виндовс функции обратного вызова специфицировались именно как export.
guav (2006-08-24 02:20:00) [14][3] Чапаев © (23.08.06 23:14)
> Вместо stdcall напиши export.
И всё равно работать не будет. Пусть лучше на вопросы в [4] ответит.
Германн (2006-08-24 01:53:00) [15]
> Это стандартный пример написанный на более поздней версии
> Делфи.
> В первой версии нет директивы stdcall, а без нее приложение
> не работает.
А где ты нашел сей пример, позволь тебя спросить? И для чего? И что ты хочешь сделать?
Чапаев (2006-08-23 23:14:00) [16]> В первой версии нет директивы stdcall, а без нее приложение
> не работает.
Дети, дети... Вместо stdcall напиши export.
Так себе (2006-08-23 22:24:00) [17]Например,
program Small;
uses
Windows, Messages, Sysutils;
{$R *.res}
var
Instance: HWnd;
WindowClass: TWndClass;
Handle: HWnd;
Msg: TMsg;
//
procedure DoExit;
begin
Halt;
end;
//
function WindowProc(Hwn,msg,wpr,lpr: Longint): Longint; stdcall;
begin
Result := DefWindowProc(hwn,msg,wpr,lpr);
if msg = wm_destroy then
DoExit;
if msg = wm_KeyDown then
if wpr = VK_ESCAPE then
DoExit;
end;
begin
//
instance := GetModuleHandle(nil);
//
WindowClass.style := CS_HRedraw or CS_VRedraw;
WindowClass.Lpfnwndproc := @windowproc;
WindowClass.Hinstance := Instance;
WindowClass.HbrBackground := color_btnface;
WindowClass.LpszClassName := 'DX';
WindowClass.Hcursor := LoadCursor(0,IDC_ARROW);
//
RegisterClass(WindowClass);
//
Handle := CreateWindowEx(0,'DX','',WS_POPUP,1,1,200,200,0,0,Instance,nil);
ShowWindow(Handle, SW_SHOW);
UpdateWindow(Handle);
//
//
while (GetMessage(msg,0,0,0)) do
begin
translatemessage(msg);
dispatchmessage(msg);
end;
end.
Это стандартный пример написанный на более поздней версии Делфи.
В первой версии нет директивы stdcall, а без нее приложение не работает.
Германн (2006-08-23 01:33:00) [18]ПППеревведи. (ц)
А при чём тут собсс-но stdcall?