Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.032 c
4-1092832619
lightix
2004-08-18 16:36
2004.09.26
Получить имя пользователя Win2k


1-1095136160
Faeton08
2004-09-14 08:29
2004.09.26
TPageControl


9-1086212573
MrAngel
2004-06-03 01:42
2004.09.26
Мультимониторинг на DirectX


14-1094211361
Frolov Alexey
2004-09-03 15:36
2004.09.26
Посоветуйте хорошие ресурсы по ASP.NET


1-1094813834
Antonmm
2004-09-10 14:57
2004.09.26
Свой курсор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский