Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Странная ошибка   Найти похожие ветки 

 
Sphinx ©   (2005-08-25 18:13) [0]

Уже сотни раз писал на API код создания окна...но тут споткнулся на ровном месте, не могу понять в чем ошибся...

Следующий код выдает AV на строке CreateWindowEx
Причем проверил - в FPC 2.0; D7 и D2005...
AV выпадает везде...или у меня уже взгляд "замылился" и ошибки не вижу...или что ???

program Project1;

{$R *.res}

uses
 Windows,
 Messages,
 Direct3D9;

var
 g_hWnd        : THandle;
 winClass      : WNDCLASS;
 uMsg          : MSG;
 g_pwndClass   : PChar;

function WindowProc(ihwnd: THandle; uMsg: Longword; wParam: Longint; lParam: Longint): Longint;
begin
 WindowProc := DefWindowProc(ihwnd, uMsg, wParam, lParam);
end;

procedure Init;
begin
end;

procedure ShutDown;
begin
end;

begin
 ZeroMemory(@uMsg, SizeOf(MSG));
 ZeroMemory(@winClass, SizeOf(WNDCLASS));

 winClass.hInstance := HInstance;
 g_pwndClass := "MY_WINDOW_CLASS";

 with winClass do
   begin
     lpszClassName := g_pwndClass;
//      cbSize        := SizeOf(WNDCLASSEX);
     style         := CS_VREDRAW or CS_HREDRAW;
     lpfnWndProc   := @WindowProc;
//      hInstance     := HInstance;
     hCursor       := LoadCursor(0, IDC_ARROW);
     hbrBackground := $000000;
     lpszMenuName  := nil;
     cbClsExtra    := 0;
     cbWndExtra    := 0;
   end;

 if (RegisterClass(winClass) = 0) then
   Halt(0);

 g_hWnd := CreateWindowEx(0,
                          "MY_WINDOW_CLASS",
                          "",
                          WS_OVERLAPPED,
                          10,
                          10,
                          640,
                          480,
                          0,
                          0,
                          winClass.hInstance,
                          nil);

 if (g_hWnd = 0) then
   Halt(0);

 ShowWindow(g_hWnd, SW_SHOW);
 UpdateWindow(g_hWnd);

 Init;

 while uMsg.message <> WM_QUIT do
   begin
     if PeekMessage(uMsg, 0, 0, 0, PM_REMOVE) then
       begin
         TranslateMessage(uMsg);
         DispatchMessage(uMsg);
       end
     else
       begin
       end;
   end;

 ShutDown;

 UnregisterClass(winClass.lpszClassName, winClass.hInstance);
end.


 
alpet ©   (2005-08-25 18:19) [1]

Пользоваться отладчиком надо. Ты проглядел stdcall в определении оконной процедуры, видать сотни раз приходилось использовать технологию Copy-Paste, вот и не отложилось в памяти :) Соответственно, при вызове CreateWindowEx первые сообщения, отправленные в нее вызовут непредсказуемые проблемы.


 
Sphinx ©   (2005-08-25 18:23) [2]

2 alpet ©
Блллллиииииннннннннннн !!!!

Не копипастил я...сам писал...
Огромное спасибо :)

З.Ы. этож надо на такой фигне погореть %)



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

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.037 c
14-1126519884
Tesla
2005-09-12 14:11
2005.10.02
Virtual TreeView, помогите разобраться с лицензиями.


14-1125921118
stone
2005-09-05 15:51
2005.10.02
Одно из мнений о ТВ.


14-1126428283
GP
2005-09-11 12:44
2005.10.02
Пишу игру ...


3-1124692434
ShotGun
2005-08-22 10:33
2005.10.02
Как можно подключиться к SQL server через протокол http?


1-1126665351
qwe
2005-09-14 06:35
2005.10.02
StringGrid