Главная страница
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.416 c
4-1092550731
DillerXX
2004-08-15 10:18
2004.09.26
Как изменить положения курсора мыши, но


1-1094166862
O l e g
2004-09-03 03:14
2004.09.26
Переполнение стека, что это?


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


1-1094460330
Beer
2004-09-06 12:45
2004.09.26
Классы в DLL


1-1094844389
][ncognito
2004-09-10 23:26
2004.09.26
RightClickSelect TreeView