Текущий архив: 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.45 MB
Время: 0.01 c