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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.09.2005, 11:55   #1  
gudzon is offline
gudzon
программист
 
1,166 / 324 (13) ++++++
Регистрация: 06.07.2004
Адрес: Москва
? Как получить размер окна и клиентской области?
Hi
Никак не соображу как решить следующую задачку. Надо при запуске отображать форму строго в заданных координатах главного окна аксапты. Но для этого нужно знать разрешение экрана (ну или размеры главного окна) при запуске. Как это узнать? Запранее спасибо.
Старый 15.09.2005, 12:01   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
:) Ну, вот уж от кого не ожидал :)
Приветствую, gudzon!
Ну, вот уж от кого не ожидал!
Перекрой ты просто порты, что б не ломились.

Я в класс WinAPI добавил новый метод:
PHP код:
client static container getWindowRect_FLX(int _hWnd)
{
    
#define.structSize(36)

    
DLL         _winApiDLL  = new DLL('USER32');
    
DLLFunction _getWndRect = new DLLFunction(_winApiDLL'GetWindowRect');
    
Binary      struct      = new Binary(#structSize);
    
int         x1,x2,y1,y2;
    
container   ret connull();
    ;

    
_getWndRect.returns(ExtTypes::DWord);
    
_getWndRect.arg(ExtTypes::DWordExtTypes::Pointer);

    
//struct.dWord (0, #structSize);

    
if (_getWndRect.call(_hWndstruct))
    {
        
x1 struct.dWord(0);
        
x2 struct.dWord(4);
        
y1 struct.dWord(8);
        
y2 struct.dWord(12);

        
ret += x1;
        
ret += x2;
        
ret += y1;
        
ret += y2;
    }
    return 
ret;

И давайте оставим тему об "окошке в правом нижнем углу", а? Спрашивай - ответим.

С Уважением,
Георгий
Старый 15.09.2005, 12:02   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
PHP код:
container getClientRect(hwnd _window)
{
    
Binary      data            = new Binary(32);
    
DLL         _winApiDLL      = new DLL('user32');
    
DLLFunction fun  = new DLLFunction(_winApiDLL'GetClientRect');

    
fun.returns(ExtTypes::DWord);

    
fun.arg(ExtTypes::DWordExtTypes::Pointer);
    
fun.call(_windowdata);

    return [
data.dWord(0), data.dWord(4), data.dWord(8), data.dWord(12)];
}

...
hWnd MdiClient WinAPI::FindWindowEx(infolog.hWnd(), 0'MDIClient''');
getClientRect(MdiClient); 
Старый 15.09.2005, 12:04   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Максим! Включи галку "Отключить смайлики в сообщении"!

С Уважением,
Георгий
Старый 15.09.2005, 12:10   #5  
gudzon is offline
gudzon
программист
 
1,166 / 324 (13) ++++++
Регистрация: 06.07.2004
Адрес: Москва
2 George Nordic
Спасибо. Я поиском пользовался. Честно.
Старый 15.09.2005, 12:12   #6  
gudzon is offline
gudzon
программист
 
1,166 / 324 (13) ++++++
Регистрация: 06.07.2004
Адрес: Москва
Re: Re: Отобразить форму в нижнем правом углу?
Цитата:
Изначально опубликовано Zabr


Что-то мне подсказывает, что первоначальная задача была - скрыть окошко с лицензией. Если так - то для этого уже давно найден более простой способ, без программирования.
Да нет. Просто нужно отображать форму для внутренней рассылки сообщений. А как скрыть лицензию? Можно ссылочку?
Старый 15.09.2005, 12:15   #7  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Да не за что. Максиму тоже спасибо сказать не забудь!

Максим!
Посмотри:
PHP код:
hWnd MdiClient WinAPI::FindWindowEx(infolog.hWnd(), 0'MDIClient'''); 
Мне кажется, что можно просто использовать infolog.hWnd()? Или возможны состояния, когда они будут различаться?

С Уважением,
Георгий
Старый 15.09.2005, 12:58   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
PHP код:
container getClientRect(hwnd _window)
{
    
Binary      data            = new Binary(32);
    
DLL         _winApiDLL      = new DLL('user32');
    
DLLFunction fun  = new DLLFunction(_winApiDLL'GetClientRect');

    
fun.returns(ExtTypes::DWord);

    
fun.arg(ExtTypes::DWordExtTypes::Pointer);
    
fun.call(_windowdata);

    return [
data.dWord(0), data.dWord(4), data.dWord(8), data.dWord(12)];

Старый 15.09.2005, 13:02   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
При придоченных окнах у меня различается
PHP код:
static void TestJob(Args _args)
{
    
hWnd MdiClient WinAPI::FindWindowEx(infolog.hWnd(), 0'MDIClient''');
container getClientRect(hwnd _window)
{
    
Binary      data            = new Binary(32);
    
DLL         _winApiDLL      = new DLL('user32');
    
DLLFunction fun  = new DLLFunction(_winApiDLL'GetClientRect');

    
fun.returns(ExtTypes::DWord);

    
fun.arg(ExtTypes::DWordExtTypes::Pointer);
    
fun.call(_windowdata);

    return [
data.dWord(0), data.dWord(4), data.dWord(8), data.dWord(12)];
}
    ;
    
info(con2str(getClientRect(infolog.hWnd())));
    
info(con2str(getClientRect(mdiCLient)));

Старый 15.09.2005, 13:10   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Уважаемые участники, может пора закругляться?
__________________
полезное на axForum, github, vk, coub.
Старый 15.09.2005, 13:43   #11  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 mazzy

Можно еще 5 копеек?

2 belugin, George Nordic

infilog.hWnd() - это главное окно Axapta
MDIClient - это дочернее окно infilog.hWnd(), на экране - это область, где отображаются формы (являются дочерними для этого окна). Располагается м-ду тулбаром и статусной строкой
__________________
Axapta v.3.0 sp5 kr2
Старый 15.09.2005, 13:57   #12  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Да, это так. Таким образом, пользуясь моей getWindowRect можно рисовать везде, вплоть до тул-бара (правда, стирается при перерисовке окна ),
А, пользуясь функией Максима getClientRect - получаем размер клиентской области. Все корректно!

Вообще, WinApi и WinGDI - хорошие, конечно, классы. Но куцые

С Уважением,
Георгий.
Старый 15.09.2005, 14:03   #13  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
При чем здесь getWindowRect? Рисовать можно даже не зная размеры окна.
__________________
Axapta v.3.0 sp5 kr2
Старый 15.09.2005, 14:24   #14  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Сорри. Имелось ввиду "узнать размеры окна".

С Уважением,
Георгий
Старый 15.09.2005, 14:45   #15  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
2 gudzon: Можно, я переименую ветку в "Размеры окна и клиентской области"?
А так же откорректируй сообщение без "правого нижнего угла"? Хорошо?

Приведем ветку в нормальный вид, ок?

С Уважением,
Георгий.
Старый 15.09.2005, 15:15   #16  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
лучше выжать только полезную информацию и добавить в erpkb - все равно форум предназначен для дискуссий а не для накопления знаний
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить указатель на отчёт когда пользователь выбрал Печать на принтер в просмотрщике, в форму SysPrintForm? rkorchagin DAX: Программирование 10 17.04.2008 11:59
Разграничение области видимости по складам Ихъ бин программикеер DAX: Функционал 1 20.07.2006 14:15
Как изменить заголовок окна предв.просмотра отчета Владимир Максимов DAX: Программирование 6 03.07.2006 15:34
Как сохранять размер связанных форм? BlueRose DAX: Программирование 2 15.06.2006 17:06
Неудобство использования аналитик "Цвет" и "Размер" clerk DAX: Функционал 17 23.05.2005 13:08

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:47.