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

Вниз

Проблема с юникодом   Найти похожие ветки 

 
ZZ ©   (2002-06-28 13:57) [0]

Код создания окна. такому окну не получается установить заголовок (получается только 1ый символ). Подскажите где ошибка?


var
msgs : MSG;
WndClass : ATOM;
Wnd : HWND;
Text : WideString;
begin
Text:="Test";
WndClass := RegisterMainWindowClassW(@WndProc);
if (WndClass<>0)
then begin
Wnd:=CreateMainWindowW(WndClass);
end;

ShowWindow(wnd,SW_SHOW);
UpdateWindow(wnd);
if isWindowUnicode(Wnd) then MessageBoxW(0,"Unicode","Test",MB_OK);
SetWindowTextW(wnd,PWideChar(Text));
while (GetMessage(msgs, 0, 0, 0))do
begin
TranslateMessage(msgs);
DispatchMessage(msgs);
end;
end.

function CreateMainWindowW(WndClass: ATOM):HWND;
begin
Result:= CreateWindowExW(0,"NTAdminMain",PWideChar(WideString("jj")),
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, hInstance, nil);
end;

function RegisterMainWindowClassW(WndProc:Pointer):ATOM;
var
wndclass : TWNDCLASSEXW;
begin
wndclass.cbSize := sizeof(WNDCLASSEXW);

wndclass.style := CS_HREDRAW or CS_VREDRAW;
wndclass.lpfnWndProc := WndProc;
wndclass.cbClsExtra := 0;
wndclass.cbWndExtra := 0;
wndclass.hInstance := hInstance;
wndclass.hIcon := 0;//LoadIcon(hInstance, (LPCTSTR)IDI_WIN32);
wndclass.hCursor := 0;//LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground := HBRUSH((COLOR_WINDOW+0));
wndclass.lpszMenuName := nil;//IDC_WIN32;
wndclass.lpszClassName := "NTAdminMain";
wndclass.hIconSm := 0;//LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

Result:= RegisterClassExW(wndclass);
end;


 
Игорь Шевченко ©   (2002-06-28 14:10) [1]


const
AClassName : WideString = "NTAdminMain";

wndclass.lpszClassName := PWideChar(AClassName);

{ На фиг здесь это параметр у функции ??? }
function CreateMainWindowW(WndClass: ATOM):HWND;
begin
Result:= CreateWindowExW(0,PWideChar(AClassName),PWideChar(WideString("jj")),
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, hInstance, nil);
end;






 
ZZ ©   (2002-06-28 16:07) [2]

Нафиг там этот параметр - не знаю. Примерчик я позаимствовал в инете :) Просто добавил буквы W

Исправил - НЕ РАБОТАЕТ !!!!!


 
ZZ ©   (2002-06-28 16:16) [3]

function WndProc(hWnd : HWND; messages :UINT; wParam : WPARAM; lParam:LPARAM):LONGINT;stdcall;
var
wmId, wmEvent : Integer;
ps : PAINTSTRUCT;
hdc : THandle;
begin
case messages of
WM_COMMAND:
begin
wmId := LOWORD(wParam);
wmEvent := HIWORD(wParam);
// Parse the menu selections:
case wmId of
MMN_ABOUT:
begin
if (IsWindowUnicode(hWnd)) then MessageBoxW(hWnd,"SSS","SSS",MB_OK)
else MessageBox(hWnd,"Error","Not Unicode",MB_OK);
SetWindowTextW(hWnd,"NewText");
// DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
end;

IDM_EXIT:
DestroyWindow(hWnd);

else
begin
Result:=DefWindowProc(hWnd, messages, wParam, lParam);
exit;
end;
end;
end;

WM_PAINT:
begin
hdc := BeginPaint(hWnd, ps);
EndPaint(hWnd, ps);
end;

WM_DESTROY:
PostQuitMessage(0);

else
begin
Result:= DefWindowProc(hWnd, messages, wParam, lParam);
Exit;
end;
end;
Result:=0;
end;


 
ZZ ©   (2002-06-28 16:16) [4]

function WndProc(hWnd : HWND; messages :UINT; wParam : WPARAM; lParam:LPARAM):LONGINT;stdcall;
var
wmId, wmEvent : Integer;
ps : PAINTSTRUCT;
hdc : THandle;
begin
case messages of
WM_COMMAND:
begin
wmId := LOWORD(wParam);
wmEvent := HIWORD(wParam);
// Parse the menu selections:
case wmId of
MMN_ABOUT:
begin
if (IsWindowUnicode(hWnd)) then MessageBoxW(hWnd,"SSS","SSS",MB_OK)
else MessageBox(hWnd,"Error","Not Unicode",MB_OK);
SetWindowTextW(hWnd,"NewText");
// DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
end;

IDM_EXIT:
DestroyWindow(hWnd);

else
begin
Result:=DefWindowProc(hWnd, messages, wParam, lParam);
exit;
end;
end;
end;

WM_PAINT:
begin
hdc := BeginPaint(hWnd, ps);
EndPaint(hWnd, ps);
end;

WM_DESTROY:
PostQuitMessage(0);

else
begin
Result:= DefWindowProc(hWnd, messages, wParam, lParam);
Exit;
end;
end;
Result:=0;
end;


 
ZZ ©   (2002-06-28 16:23) [5]

Вопрос снят


 
ZZ ©   (2002-06-28 16:24) [6]

Вопрос снят
Надо было и DefWindowProcW DispatchMessageW GetMessageW

Игорь Шевченко
Спасибо за помощь в чате :)



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

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

Наверх




Память: 0.48 MB
Время: 0.015 c
14-3596
Sergo
2002-08-07 10:48
2002.09.02
Окно


6-3549
CAHEK
2002-06-22 22:00
2002.09.02
Посчитать траффик из I-net а


1-3440
AFROLOV
2002-08-20 13:39
2002.09.02
Удаление Type Lib из Delphi


8-3526
Иван
2002-04-27 00:43
2002.09.02
Текст в Bitmap


1-3363
Kolya
2002-08-22 06:45
2002.09.02
Кнопки в DBGrid