Главная страница
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.014 c
4-15993
vicheslav
2002-12-23 13:57
2003.02.06
Как вызвать извлечение сёмного устройства?


4-15982
drake
2002-12-22 23:40
2003.02.06
Приоритет приложения


1-15714
Новичок
2003-01-27 19:35
2003.02.06
Image, цвет пикселя.


3-15437
Наташа
2003-01-22 13:14
2003.02.06
Транзакции


3-15529
Kudatsky
2003-01-21 11:49
2003.02.06
MS SQL Server и DBF-файлы