Главная страница
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.024 c
4-1123249044
Anton S.
2005-08-05 17:37
2005.10.02
Форма "всегда внизу"


8-1115850036
TechnoDreamer
2005-05-12 02:20
2005.10.02
Jpeg и crop


14-1125518725
TG
2005-09-01 00:05
2005.10.02
ICQ


2-1124272616
Dysan
2005-08-17 13:56
2005.10.02
посоветуйте как решить проблему


4-1123564499
ANB
2005-08-09 09:14
2005.10.02
Как получить номер версии своей программы ?