При вызове функции CreateWindowEx происходит ошибка доступа памяти, каждый раз по разным адресам.
BCB6, Delphi7, WinXP SP1.
Вот код:
//-----------Project---------------------------------------------------------
#include <windows.h>
#include "uglyuck.hpp"
#pragma hdrstop
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
SvcEntry();
}
catch (...)
{
}
return 0;
}
//---------------------------------------------------------------------------
unit uGlyuck;
interface
procedure SvcEntry;
implementation
uses Windows;
const WndClsName: PChar = 'DevNotHandlerWin';
function WinProc(hWind: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): integer;
begin
Result:= DefWindowProc(hWind, uMsg, wParam, lParam);
end;
procedure SvcEntry;
var
Mesg: MSG;
hWin: HWND;
WindowClass: TWNDCLASSEX;
ClsAtom: ATOM;
begin
WindowClass.cbSize:= sizeof(TWNDCLASSEX);
WindowClass.style:= CS_DBLCLKS;
WindowClass.lpfnWndProc:= (@WinProc);
WindowClass.cbClsExtra:= 0;
WindowClass.cbWndExtra:= 0;
WindowClass.hInstance:= GetModuleHandle(nil);
WindowClass.hIcon:= 0;//LoadIcon(nil, );
WindowClass.hCursor:= 0;//LoadCursor(0, IDC_ARROW);
WindowClass.hbrBackground:= 0;//HBRUSH(COLOR_BTNFACE);
WindowClass.lpszMenuName:= nil;
WindowClass.lpszClassName:= WndClsName;
WindowClass.hIconSm:= 0;
ClsAtom:= $0000;
ClsAtom:= RegisterClassEx(WindowClass);
if ClsAtom = 0 then begin
Exit;
end;
hWin:= CreateWindowEx(0,
WndClsName,
'HandlerWindow',
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,
0,
0,
nil);
if hWin = 0 then begin
UnregisterClass(pointer(ClsAtom), hInstance);
Exit;
end; //if
while GetMessage(Mesg, 0, 0, 0) do begin
TranslateMessage(Mesg);
DispatchMessage(Mesg);
end;
UnregisterClass(pointer(ClsAtom), hInstance);
end;
end.
Спасибо за внимание.