Главная страница
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.02 c
7-15970
volodya_
2002-12-02 11:09
2003.02.06
Нужно отключить левую кнопку на мышке


1-15686
stdnet
2003-01-27 14:15
2003.02.06
Работа с реестром


14-15927
Дремучий
2003-01-20 23:46
2003.02.06
Посоветуйте http-сайт-менеджера.


4-15994
melifaro
2002-12-20 08:40
2003.02.06
Как открыть окно


14-15834
Новый на этоим форуме
2003-01-22 17:03
2003.02.06
Прелести php