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

Вниз

MessageBoxIndirectW   Найти похожие ветки 

 
Алексей Ким ©   (2002-12-23 11:12) [0]

Здрасте,

Я немного запутался с PWideChar, я делаю свой мессаг диалог,
вызываю его MessageBoxIndirectW() или A в зависимости от платформы.

Вызов:
ShowDialog ( window, 1, 2, Icon );
window - valid hwnd
Icon - hIcon

Текст хранится в ресурсе, и загружаю LoadString, на 98 все ОК а НТ
кракозябрики

код

function LoadStr ( N: Integer ): String;
var
Buf: array [ 0..1023 ] of Char;
begin
FillChar ( Buf, SizeOf ( Buf ), #0 );
LoadString ( SysInit.hInstance, N, Buf, 1024 );
if ( String ( Buf ) <> "" ) then Result := String ( Buf )
else Result := "res not found";
end;

function ShowDialog ( Owner: HWND; CaptRes, TextRes: Integer; Icon: PChar ): Boolean; overload;
var
Version: TOSVersionInfo;
MsgBoxParamsW: TMsgBoxParamsW;
MsgBoxParamsA: TMsgBoxParamsA;

begin
Version.dwOSVersionInfoSize := SizeOf ( TOSVersionInfo );
GetVersionEx ( Version );
Result := ( Version.dwPlatformId = VER_PLATFORM_WIN32_NT );
if Result then begin
FillChar ( MsgBoxParamsW, SizeOf ( MsgBoxParamsW ), #0 );
with MsgBoxParamsW do
begin
cbSize := SizeOf ( MsgBoxParamsW );
hwndOwner := Owner;
hInstance := SysInit.hInstance;
lpszText := PWideChar ( PChar ( LoadStr ( TextRes ) + #0 ) );
lpszCaption := PWideChar ( PChar ( LoadStr ( CaptRes ) + #0 ) );
lpszIcon := PWideChar ( Icon );
dwStyle := MB_USERICON or MB_TASKMODAL;
end;
MessageBoxIndirectW ( MsgBoxParamsW );
end
else
begin
FillChar ( MsgBoxParamsA, SizeOf ( MsgBoxParamsA ), #0 );
with MsgBoxParamsA do
begin
cbSize := SizeOf ( MsgBoxParamsA );
hwndOwner := Owner;
hInstance := SysInit.hInstance;
lpszText := PChar ( LoadStr ( TextRes ) + #0 );
lpszCaption := PChar ( LoadStr ( CaptRes ) + #0 );
lpszIcon := Icon;
dwStyle := MB_USERICON or MB_TASKMODAL;
end;
MessageBoxIndirectA ( MsgBoxParamsA );
end;
end;

Подскажите как исправить


 
Игорь Шевченко ©   (2002-12-23 16:35) [1]

lpszText := PWideChar ( PChar ( LoadStr ( TextRes ) + #0 ) );

А почему преобразование указателя должно преобразовывать данные, на которые указывает этот указатель ? :-)))

Лучше использовать LoadStringA/LoadStringW раз уж так хочется
иметь строки в разной кодировке.
Хотя зачем, непонятно. NT и Win95 прекрасно понимают ANSI-кодировку



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

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

Наверх




Память: 0.47 MB
Время: 0.017 c
1-15713
Imshanya
2003-01-27 17:28
2003.02.06
Как оставить ветку меню


6-15808
Jurgen
2002-12-15 22:09
2003.02.06
Сеть


1-15616
TAN
2003-01-29 12:06
2003.02.06
замена символов


14-15873
M4
2003-01-12 13:39
2003.02.06
Собирается команда...


1-15636
Anton
2003-01-29 13:23
2003.02.06
Чем отличаются Application.Terminate; и Application.Destroy;