AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.09.2005, 18:28   #24  
Maximin is offline
Maximin
NavAx
NavAx Club
 
412 / 346 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Короче, раз никто толком WinAPI не знает, будем учить.

В общем, рецепт оказался универсальный.
Можно сменить как кисть фона (как в моем примере), так и собственно, и значок (ессно, его придется загрузить перед этим).

Вкратце:
PHP код:
static void AxBackgrPaint(Args _args)
{
    
#define.GCL_HBRBACKGROUND  (-10)
    #define.BS_SOLID           (0)
    #WinAPI
    
WinGDI                      winGDI = new WinGDI(0);
    
int     brushHdroldBrushHdr;
    
int     mdiHdr;
    ;
    
brushHdr    winGDI.createSolidBrush(WinAPI::RGB2int(0,0,0));
    
mdiHdr      WinApi::findWindowEx(infolog.hWnd(), 0"MDIClient","");
    
oldBrushHdr WinAPI::getClassLong(mdiHdr#GCL_HBRBACKGROUND);

    
WinAPI::setClassLong(mdiHdr#GCL_HBRBACKGROUND, brushHdr);
    
WinAPI::invalidateRect(mdiHdr);
    
winGDI.deleteObject(oldBrushHdr);

Да, и вписанная в класс WinAPI функция:

PHP код:
client static int setClassLong(int hWndint offsetint newValue)
{
    
DLL         _winApiDLL = new DLL('USER32');
    
DLLFunction _setClassLong = new DLLFunction(_winApiDLL'SetClassLongA');

    
_setClassLong.returns(ExtTypes:: DWord);
    
_setClassLong.arg(ExtTypes:: DWordExtTypes:: DWordExtTypes:: DWord);

    return 
_setClassLong.call(hWndoffsetnewValue);

Чтобы заменить иконку - нужно завести константу GCL_HICON (-14), соответственно, ну и загрузить иконку. Вообще, там можно извращаться с этим классом окна, как угодно, можно, к примеру, курсор поменять на символ Q1/Q2/Q3 (кому какой нравится).
недостаток у этого способа только один - при злоупотреблении сменой фона исходные кисти, которой был он был заполнен до очередной смены, не будут автоматом удалены при завершении приложения(что к WinNT-based не относится). Впрочем, это легко исправить. Достаточно удалять старые кисти/иконки/что ещё вызовом DeleteObject. (Upd: все-таки приделал. Чтоб всё было по-правилам).

Пишу я, значит, это, а Аксапта имеет у меня такой гламурный-гламурный вид...

P.S. Ну, блин, ну нафига же смайлики разворачивать в X++ коде, а, Mazzy?
За это сообщение автора поблагодарили: mazzy (15).
Теги
ax2009, axapta, download, faq, winapi, база данных, внешний вид, законченный пример, иконка, интерфейс, полезное, фон

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как сильно модифицировано ваше приложение Аксапты? mazzy DAX: Прочие вопросы 30 14.04.2011 17:26
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
миграция - в Аксапте и с Аксапты somebody DAX: Программирование 5 18.10.2005 11:06
Как быстро освоить библиотеку классов Аксапты? spartan DAX: Программирование 9 11.05.2005 12:07
Экспорт / импорт Help topics и запуск второй сессии Аксапты из-под себя DmitrySt DAX: Программирование 0 25.11.2004 00:22

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:15.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.