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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.09.2005, 18:28   #21  
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).
Старый 13.09.2005, 18:47   #22  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Только лицензия стала прямоугольная
__________________
Axapta v.3.0 sp5 kr2
Старый 13.09.2005, 18:52   #23  
Maximin is offline
Maximin
NavAx
NavAx Club
 
412 / 346 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Как это?
У меня она как была квадратная, так и осталась.
Хмм... разве что если включены разнообразные XP-извращения вроде полукруглых окошек, такое может быть... А в таком случае - ССЗБ.


А вообще - спасибо за идею насчет значков Ruff.
Идея до конца дня лежала где-то на периферии сознания, когда вечером для разминки решил таки попробовать её реализовать.
Старый 13.09.2005, 18:55   #24  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Душа тянется к прекрасному
__________________
Axapta v.3.0 sp5 kr2
Старый 13.09.2005, 19:04   #25  
Maximin is offline
Maximin
NavAx
NavAx Club
 
412 / 346 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Talking
А вообще - если лицензия стала прямоугольной - закажите у Columbus'а новую.
Или подклейте скотчем пару полосок 10x2 см к уже существующей.
За это сообщение автора поблагодарили: blokva (1).
Старый 13.09.2005, 19:18   #26  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Нет, надо в Microsoft устроить новый тестовый забег на предмет страшного бага.
__________________
Axapta v.3.0 sp5 kr2
Старый 13.09.2005, 19:21   #27  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Она зараза еще и крупнее. Вот к чему ведет тяга к прекрасному
__________________
Axapta v.3.0 sp5 kr2
Старый 13.09.2005, 23:40   #28  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Maximin
P.S. Ну, блин, ну нафига же смайлики разворачивать в X++ коде, а, Mazzy?
Спасибо, записал в ТЗ на доработку форума.
__________________
полезное на axForum, github, vk, coub.
Старый 14.09.2005, 16:50   #29  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Изначально опубликовано mazzy

Спасибо, записал в ТЗ на доработку форума.
Ага и раскраску сообщения в синий фон после вставки фрагмента кода тоже.
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 14.09.2005, 20:02   #30  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
да уже давно.
__________________
полезное на axForum, github, vk, coub.
Старый 14.09.2005, 20:15   #31  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Изначально опубликовано mazzy
да уже давно.
а у меня прямо в этой ветке синее сообщение и более мелкие буквы, после кода
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 14.09.2005, 20:19   #32  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Вот в файле картинка
не вставляется почему-то
Вложения
Тип файла: img80288-1 (27.9 Кб, 1633 просмотров)
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 08.07.2006, 14:21   #33  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Меняем стандартную иконку
Возвращаясь к теме по причине того, что периодически возникают проблеммы с "перепутыванием" открытых экземпляров...а это раздражает...оно меня раздражает (с) Жванецкий
Идея и подсказка Maximin, за что большой респект (к сожалению только 1)
дополнительно к методу WinAPI::setClassLong() добавляем метод в WinGDI

PHP код:
#DEFINE.LR_LOADFROMFILE(0x00000010)
#DEFINE.IMAGE_BITMAP (0)
#DEFINE.IMAGE_ICON   (1)
#DEFINE.IMAGE_CURSOR (2)

static int liadImage(str _file)
{
    
DLL             dll;
    
DLLFunction     dllFunction;
    
int             result;
    ;

    
dll = new DLL('user32.dll');
    
dllFunction = new DLLFunction(dll,'LoadImageA');
    
dllFunction.arg(ExtTypes::DWordExtTypes::StringExtTypes::DWordExtTypes::DWordExtTypes::DWordExtTypes::DWord);
    
dllFunction.returns(ExtTypes::DWord);

    
result dllFunction.call(null_file#IMAGE_ICON, 16, 16, #LR_LOADFROMFILE);

    
return result;

оффтоп:немного хардкода правда, но мне простительно

ну и собсно меняем:

PHP код:
static void AxIconChange(Args _args)
{
    
#define.GCL_HICON          (-14)
    #WinAPI

    
int                     icomainwin;
    ;
    
mainwin infolog.hWnd();
    
// например для тестового экземпляра стандартная иконка с большой синей буквой "Т" в центре
    
ico =  WinGDI::liadImage("D:\\222\\AxApplT.ico");
    
    
WinAPI::setClassLong(mainwin#GCL_HICON, ico);

зы: на всякий случай, прикладываю архивчик с измененными стандартными иконками.
ззы: у себя я меняю автоматически при входе в опре деленный экземпляр аксапты путем указания и последующей обработки необходимой команды в поле "Startap Command" в конфигурационной утилиты. Если интересует могу рассказать как.

Добавил скриншотик, как это выглядит в таскбаре, по порядку: тестовая, рабочая, локальная
Миниатюры
Нажмите на изображение для увеличения
Название: Разные иконки.jpg
Просмотров: 601
Размер:	7.8 Кб
ID:	1972  
Вложения
Тип файла: rar AxIcons.RAR (3.8 Кб, 235 просмотров)
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/

Последний раз редактировалось blokva; 08.07.2006 в 14:34.
За это сообщение автора поблагодарили: Antant (1).
Старый 10.07.2006, 07:42   #34  
Antant is offline
Antant
Участник
 
82 / 17 (1) ++
Регистрация: 03.12.2005
Пытаюсь поставить свою строку в заголовке окна в начале работы системы - не получается. Происходит какое-то обновление всего окна сразу после загрузки системы. Можете подсказать метод, который вызывается после такого обновления, чтобы название окна не менялось после того, как я его изменю.
__________________
И почему никто меня не любит?
Да, я надоедливый
Старый 10.07.2006, 10:46   #35  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от Antant
Пытаюсь поставить свою строку в заголовке окна в начале работы системы - не получается. Происходит какое-то обновление всего окна сразу после загрузки системы. Можете подсказать метод, который вызывается после такого обновления, чтобы название окна не менялось после того, как я его изменю.
С этим надо дополнительно разбираться, лезть в МСДН, а пока нету времени, может кто-то с ходу знает что и как надо вызывать?
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 10.07.2006, 11:03   #36  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
\Classes\Info\onEventGoingIdle
X++:
//Event fired by kernel when the client goes idle.
//It is not fired during CTRL-Break dialog.
void onEventGoingIdle()
{
    this.operationProgressClear();
    this.endLengthyOperation(true);
    ///
    if(strLwr(curUserID())!='admin')
        TitleChanger::changeTitle();
}
X++:
static void changeTitle()
{
    #define.WM_SETTEXT(0x000C)
    str         caption;
    str prefix=new Session().AOSName()+": ";
    int  defWindowProc(
                               int              _handle,
                               int              _msg,
                               int              _wParam,
                               str              _lParam )
    {
        int         ret;
        DLL         _DLL             = new DLL('USER32');
        DLLFunction _defwproc        = new DLLFunction(_DLL, 'DefWindowProcA');
        ;

        _defwproc.returns(ExtTypes:: DWord); // LRESULT
        _defwproc.arg(ExtTypes:: DWord);     // handle window
        _defwproc.arg(ExtTypes:: DWord);     // message
        _defwproc.arg(ExtTypes:: DWord);     // wparm
        _defwproc.arg(ExtTypes::String);     // lparm

        return  _defwproc.call(_handle, _msg, _wParam, _lParam);
    }
    ;
    caption = winapi::getWindowText(infolog.hWnd());
    if(!StrUtils::startsWith(caption, prefix))
        defWindowProc(infolog.hWnd(), #WM_SETTEXT, 0, prefix + caption);
}
X++:
// строка _s начинается на _suffix
static boolean startsWith(str _s, str _prefix)
{
    return
        strLen(_s)>=strLen(_prefix)
        &&
        subStr(_s, 1, strLen(_prefix))==_prefix;
}
За это сообщение автора поблагодарили: blokva (1), gl00mie (1), Antant (1), Sergey Petrov (1), kpoxa (0).
Старый 19.01.2007, 16:44   #37  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Maximin Посмотреть сообщение
В общем, рецепт оказался универсальный. Можно сменить как кисть фона (как в моем примере), так и собственно, и значок (ессно, его придется загрузить перед этим).
Для справки: в 4.0 больше не работает. Теперь окно MDIClient состоит из Navigation Pane и "серого квадрата", который, очевидно, каждый раз заливается заново в .paint(). Дочерние окна прорисовываются не на "заднем фоне" родительского окна, а поверх этого квадрата. А жаль.
Старый 01.08.2007, 08:56   #38  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от EVGL Посмотреть сообщение
Для справки: в 4.0 больше не работает. Теперь окно MDIClient состоит из Navigation Pane и "серого квадрата", который, очевидно, каждый раз заливается заново в .paint(). Дочерние окна прорисовываются не на "заднем фоне" родительского окна, а поверх этого квадрата. А жаль.
А как можно менять иконку в 4-ке, может кто-то сможет разобраться?
Ос-с-сина нада...
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 15.10.2007, 16:25   #39  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от blokva Посмотреть сообщение
А как можно менять иконку в 4-ке, может кто-то сможет разобраться?
Ос-с-сина нада...
Неужели никто не разобрался?!
Небольшое уточнение в "Диспетчере задач" показывается измененная иконка!!!
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 30.12.2009, 13:19   #40  
Antant is offline
Antant
Участник
 
82 / 17 (1) ++
Регистрация: 03.12.2005
Ни у кого не получилось решить задачку со сменой значка 4.0/5.0 ?
__________________
И почему никто меня не любит?
Да, я надоедливый
Теги
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, время: 17:39.