Форум: "WinAPI";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
ВнизИспользование MessageBoxIndirect. Найти похожие ветки
← →
Forelli (2004-08-11 22:55) [0]Есть проблема. В свойство hInstance задаю HINstance, dwStyle:=MB_USERICON; Ресурс с иконкой прикреплён к проекту директивой {$R resource.res}. А вот что задавать в свойстве lpszIcon? Что только не перепробовал! Ничего не работает. Сообщение вылазит, а иконки нет.
← →
Cobalt © (2004-08-12 00:46) [1]Вообще-то он объявлен, как PAnsiChar...
А что ты этому полю присваивал?
← →
GuAV © (2004-08-12 01:46) [2]
> Ресурс с иконкой прикреплён к проекту директивой {$R resource.res}.
>
А как иконка обозавна? если обозавна числом, например 100 то PAnsiChar(100), если текстом, например ICON1, то "ICON1"
← →
Игорь Шевченко © (2004-08-12 09:58) [3]
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R ADD.RES}
procedure TForm1.Button1Click(Sender: TObject);
var
Msg: TMSGBOXPARAMS;
begin
Msg.cbSize:= SizeOf(Msg);
Msg.hwndOwner:= Handle;
Msg.hInstance:= hInstance;
Msg.lpszText:= "Test message box with user defined icon";
Msg.lpszCaption:= "TestMessage";
Msg.dwStyle:= MB_USERICON;
Msg.lpszIcon:= MakeIntResource(7);
Msg.dwContextHelpId:= 0;
Msg.lpfnMsgBoxCallback:= nil;
Msg.dwLanguageId:= LANG_NEUTRAL;
MessageBoxIndirect(Msg);
Showmessage(SysErrorMessage(GetLastError));
end;
end.
add.rc#include "add.rh"
HS_ICON ICON "hs_main.ico"
add.rh#define HS_ICON 7
← →
ALS © (2004-08-12 11:20) [4]
if Win32Platform = VER_PLATFORM_WIN32_NT then
PWideChar(MSGBOXPARAMS.lpszIcon) := "MAINICON"
else
MSGBOXPARAMS.lpszIcon := "MAINICON";
← →
Игорь Шевченко © (2004-08-12 11:28) [5]ALS © (12.08.04 11:20) [4]
Зачем ? Вызывается же messageBoxIndirectA
← →
ALS © (2004-08-12 11:40) [6]>Игорь Шевченко © (12.08.04 11:28) [5]
Help - Windows SDK - MessageBoxIndirect - Quick info:
Unicode WinNT
Если обращаться к ресурсу по имени, без приведения типа к PWideChar под W2000,D5,D6 у меня иконка не появляется
← →
Игорь Шевченко © (2004-08-12 12:28) [7]ALS © (12.08.04 11:40) [6]
> Help - Windows SDK - MessageBoxIndirect - Quick info:
> Unicode WinNT
MessageBoxIndirect: Unicode: Implemented as Unicode and ANSI versions on Windows NT, Windows 2000, Windows XP
MSGBOXPARAMS: Unicode: Implemented as Unicode and ANSI versions on Windows NT, Windows 2000, Windows XP
http://msdn.microsoft.com
Однако, твоя правда, иконка по имени не показывается до тех пор, пока ее в Unicode не переведешь.
Причем, такое поведение заложено в Windows, так как внутри MessageBoxIndirect все время вызывается LoadIconW, вне зависимости от того, какая из функций MessageBoxIndirectA или MessageBoxIndirectW вызвана.
Баг-с.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c