Помощь - Поиск - Пользователи - Календарь
Полная версия: непонятки с программированием без Vcl
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Dark
Вот, попробовал по drkb32 написать прогу так как описано в drkb


program Project1;

uses Windows, Messages;

const AppName = 'WinMin';

Var  
Window : HWnd;  

 
Message : TMsg;  

WindowClass : TWndClass;



function WindowProc (Window : HWnd; Message, WParam : Word; LParam : LongInt) : LongInt; stdcall;
begin
WindowProc := 0;

case Message of  

 
wm_Destroy :begin  


PostQuitMessage (0);  

Exit;  

 
end;  

 
end; // case

WindowProc := DefWindowProc (Window, Message, WParam, LParam);  

 
end;

begin
with WindowClass do  

 
begin  


Style := cs_HRedraw or cs_VRedraw;  

lpfnWndProc := @WindowProc;  

cbClsExtra := 0;  

cbWndExtra := 0;

hInstance := 0;

hIcon := LoadIcon (0, idi_Application);  

hCursor := LoadCursor (0, idc_Arrow);  

hbrBackground := GetStockObject (White_Brush);  

lpszMenuName := '';  

lpszClassName := AppName;  

 
end;

 
If RegisterClass (WindowClass) = 0 then Halt (255);  

Window := CreateWindow(AppName,  


'Win_Min',  

ws_OverlappedWindow,  

cw_UseDefault,

cw_UseDefault,  

cw_UseDefault,  

cw_UseDefault,  

0,  

0,

HInstance,  

nil);  

 
ShowWindow (Window, CmdShow);

UpdateWindow (Window);

while GetMessage (Message, 0, 0, 0) do  

 
begin  

 
TranslateMessage (Message);  

DispatchMessage (Message);  

 
end;

 
Halt  

 
end.




он мне ругается что параметр cw_UseDefault выходит за рамки диапазона (но проект компилит) - почему?
volvo
Dark, вот так в Дельфи определено значение CW_USEDEFAULT:
CW_USEDEFAULT = DWORD($80000000);

А вот так - функция CreateWindow:
function CreateWindow(lpClassName: PChar; lpWindowName: PChar;
dwStyle: DWORD; X, Y, nWidth, nHeight: Integer; hWndParent: HWND;
hMenu: HMENU; hInstance: HINST; lpParam: Pointer): HWND;


Так что произойдет, если ты вызовешь функцию так:
Window := CreateWindow(AppName, 'Win_Min', ws_OverlappedWindow,
cw_UseDefault, cw_UseDefault, cw_UseDefault, cw_UseDefault,
0, 0, HInstance, nil);
?
Выход за границы диапазона (диапазон DWord больше, чем Integer), что тебе и говорил компилятор smile.gif
Что делать чтобы убрать сообщение?
Window := CreateWindow(AppName, 'Win_Min', ws_OverlappedWindow,
Integer(cw_UseDefault), Integer(cw_UseDefault),
Integer(cw_UseDefault), Integer(cw_UseDefault),
0, 0, HInstance, nil);
... rolleyes.gif
Dark
Спасиба, на соответствие типов у мя не было времени проверить =)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.