Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизRegisterCalssEx Найти похожие ветки
← →
jonni (2003-09-04 15:55) [0]проблема в регистрации класса: что не так понять не могуу....
создаю свой класс:
//--------------------
type
TMyWindow = class
private
c_hWnd:HWND;
c_WndClass:String;
protected
public
constructor Create();
function RegisterMyClass(f_WndClass:String):Boolean;
published
end;
//-----------------
constructor TMyWindow.Create();
begin
inherited;
c_hWnd:=0;
c_WndClass:="";
end;
function TMyWindow.RegisterMyClass(f_WndClass: String): Boolean;
var wc:TWndClassEx;
begin
Result:=False;
with wc do
begin
cbSize := SizeOf(wc);
lpfnWndProc := @WndProc;
hInstance := SysInit.hInstance;
lpszClassName := PChar(f_WndClass);
hIcon := LoadIcon (0, IDI_APPLICATION);
hCursor := LoadCursor (0,IDC_ARROW);
end;
if RegisterClassEx (wc) = 0 then
begin
MessageBox (0, pchar("hren wam"), PChar("fignya"), MB_OK or MB_ICONERROR or MB_SETFOREGROUND or MB_TOPMOST);
Result:=True;
end;
end;
//----------------
далее делаю вот как:
var
myWind:TMyWindow;
myWindow:=TMyWindow.Create;
myWindow.RegisterMyClass("my_window");
регистрация класса не происходит :(
НО если я перенесу код регистрации класса в тело программы то всё проходит успешно...
Что же не так?
← →
Игорь Шевченко (2003-09-04 15:57) [1]А что говорит GetLastError ?
← →
jack128 (2003-09-04 16:09) [2]
> НО если я перенесу код регистрации класса в тело программы
> то всё проходит успешно...
А когда класс не регистрирутся, это не в теле программы? Тогда где?
← →
Игорь Шевченко (2003-09-04 16:20) [3]Перед строкой
cbSize := SizeOf(wc);
Вставить
Fillchar(wc, SizeOf(wc), 0);
← →
Игорь Шевченко (2003-09-04 16:39) [4]Пример:
procedure InitApp ();
var
MyClass : WNDCLASSEXW;
MyWnd : HWND;
begin
MyClass.cbSize := SizeOf(MyClass);
MyClass.style := CS_HREDRAW or CS_VREDRAW;
MyClass.lpfnWndProc := @MyWndProc;
MyClass.cbClsExtra := 0;
MyClass.cbWndExtra := 0;
MyClass.hInstance := HInstance;
MyClass.hIcon := 0;
MyClass.hCursor := LoadCursorW(0, IDC_ARROW);
MyClass.hbrBackground := GetSysColorBrush(COLOR_BTNFACE);
MyClass.lpszMenuName := nil;
MyClass.lpszClassName := PWideChar(WindowClassName);
MyClass.hIconSm := 0;
if RegisterClassExW(MyClass) = 0 then
RaiseLastWin32Error();
.....
Вместо Unicode-функций подставить их Ansi-версии
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c