Главная страница
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.021 c
14-1094741972
X9
2004-09-09 18:59
2004.09.26
Философия


6-1089846891
_Demik_
2004-07-15 03:14
2004.09.26
-= Поток медиа данных микрофона в нет или голосовой чат =-


14-1094452637
YurikGL
2004-09-06 10:37
2004.09.26
Файрволл и авторизация


1-1095106813
Garfunkel
2004-09-14 00:20
2004.09.26
Прикрипление файлов к программе


3-1093591496
Sirruf
2004-08-27 11:24
2004.09.26
Грабли с датами в ADO