Форум: "WinAPI";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизПроблема с юникодом Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c