Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

Использование 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 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.119 c
14-1094399846
Igorek
2004-09-05 19:57
2004.09.26
Сможем ли мы когда-нибуть увидеть Большой Взрыв и другие космосы?


3-1093509357
Nat
2004-08-26 12:35
2004.09.26
Пустая запись в DBGrid


1-1094718598
V l a d i m i r
2004-09-09 12:29
2004.09.26
Если запущен Word, как активировать только что созданный документ


4-1092264455
Adil
2004-08-12 02:47
2004.09.26
Ком порт


14-1094312068
Soft
2004-09-04 19:34
2004.09.26
Borland Delphi 7 Enterprise Edition (2CD) $60