|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблема с модулем dialogs.pas
Такая проблемка в программе есть вызов окно Dialogs.MessageDlg('Диалог',mtInformation,[mbOK],0) почемуто сообщения отображаються кракозябрами. При использовании MessageBox(0,'Проверка','Error',MB_ICONERROR); все отлично отображаеться. И это проявляеться когда программа запускаеться от пользователя с ограниченными провами в системе.
DElphi 7. win XP SP2 |
#2
|
|||
|
|||
В отличие от MessageBox, являющаяся функцией API, MessageDlg конструирует Delphi, естественно, также применяя различные
функции API. Для интереса посмотрите функцию CreateMessageDialog в модуле Dialogs. При создании окна MessageDlg применяется функция CreateFontIndirect, в параметр которой надо передавать структуру LOGFONT. Delphi не затрудняет себя излишней заботой о заполнении этой структуры - для янки сойдет и значения по умолчанию, и так все будет корректно. Как Windows будет интерпретировать значение DEFAULT_CHARSET в поле lfCharSet упомянутой структуры в какой-либо ситуации в нашей стране мы уже можем догадаться по возникшей проблеме. Видимо, с ограничением прав, не все шрифты с кириллицей доступны, вернее шрифты с charset Win1251. А по мне, так пользоваться "MessageDlg" собственного изготовления и забыть про эту проблему. Не забывайте делать резервные копии |