Hey guys, I´m having trouble with basic unicode windows functions.

I created a very simple demo app that just creates an window. My
objective is to see a correct title on the window that should be
"fpGFX Window"

If   UnicodeEnabledOS is set to False, it works correctly. If it´s set
to True, I can only see "f" on the window title.

Can anyone help me?

thanks

program winnt;

{$mode objfpc}{$H+}

uses
 SysUtils, Classes, Windows;

function fpGFXWindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM;
 lParam: LPARAM): LRESULT; stdcall;
begin
   Result := Windows.DefWindowProc(hwnd, uMsg, wParam, lParam);
end;

var
 WindowClass: TWndClass;
 WindowClassW: TWndClassW;
 UnicodeEnabledOS: Boolean;
 Handle: THandle;
begin
 UnicodeEnabledOS := True;

 FillChar(WindowClass, SizeOf(TWndClass), #0);
 FillChar(WindowClassW, SizeOf(TWndClassW), #0);

 // Initialize a window class, if necessary
 if UnicodeEnabledOS then
 begin
   WindowClassW.style := CS_HREDRAW or CS_VREDRAW;
   WindowClassW.hInstance := MainInstance;
   WindowClassW.lpfnWndProc := WndProc(@fpGFXWindowProc);
   WindowClassW.lpszClassName := 'fpGFX';
   WindowClassW.hIcon         := LoadIcon(0, IDI_APPLICATION);
   WindowClassW.hCursor       := LoadCursor(0, IDC_ARROW);

   Windows.RegisterClassW(@WindowClassW);
 end
 else
 begin
   WindowClass.style := CS_HREDRAW or CS_VREDRAW;
   WindowClass.hInstance := MainInstance;
   WindowClass.lpfnWndProc := WndProc(@fpGFXWindowProc);
   WindowClass.lpszClassName := 'fpGFX';
   WindowClass.hIcon         := LoadIcon(0, IDI_APPLICATION);
   WindowClass.hCursor       := LoadCursor(0, IDC_ARROW);

   Windows.RegisterClass(@WindowClass);
 end;

 if UnicodeEnabledOS then
  Handle := Windows.CreateWindowExW(
    WS_EX_APPWINDOW,                    // extended window style
    'fpGFX',                            // registered class name
    'fpGFX Window',                     // window name
    WS_OVERLAPPEDWINDOW,                        // window style
    CW_USEDEFAULT,                      // horizontal position of window
    CW_USEDEFAULT,                      // vertical position of window
    CW_USEDEFAULT,                      // window width
    CW_USEDEFAULT,                      // window height
    0,                  // handle to parent or owner window
    0,                                  // menu handle or child identifier
    MainInstance,                       // handle to application instance
    nil)                                // window-creation data
 else
  Handle := Windows.CreateWindowEx(
    WS_EX_CLIENTEDGE,                   // extended window style
    'fpGFX',                            // registered class name
    'fpGFX Window',                     // window name
    WS_OVERLAPPEDWINDOW,                        // window style
    CW_USEDEFAULT,                      // horizontal position of window
    CW_USEDEFAULT,                      // vertical position of window
    CW_USEDEFAULT,                      // window width
    CW_USEDEFAULT,                      // window height
    0,                  // handle to parent or owner window
    0,                                  // menu handle or child identifier
    MainInstance,                       // handle to application instance
    nil);                               // window-creation data

 ShowWindow(Handle, SW_SHOWNORMAL);

 Sleep(5000);
end.

_________________________________________________________________
    To unsubscribe: mail [EMAIL PROTECTED] with
               "unsubscribe" as the Subject
  archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to