Главная страница
    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.45 MB
Время: 0.01 c
7-15945
Yelchev
2002-11-26 15:56
2003.02.06
Вопрос о MSGINA.DLL


1-15730
Slonic75
2003-01-27 11:23
2003.02.06
Консольное приложение в Delphi


3-15479
ruslan_as
2003-01-20 14:25
2003.02.06
IB6 подчиненный IBQuery


14-15821
RomaIzDurdoma
2003-01-18 00:39
2003.02.06
Апгрейд ПО


3-15502
Донской
2003-01-20 19:26
2003.02.06
Как отловить вставку текста из выпадающего списка PickList в поле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский