Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2013, 13:15   #1
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
По умолчанию Размер окна; WM_HOTKEY

Пишу программу на Win Api, столкнулся с двумя проблемами:

1) Создаю окно:
CreateWindowEx(
WS_EX_CONTROLPARENT, ClassName, WindowName,
WS_OVERLAPPED or WS_MINIMIZEBOX or WS_SYSMENU, 0, 0, 1280, 1024, hScreen, 0, HInstance, nil);
При разрешении экрана < 1280x1024 окно создается с размером, равным экрану. Если же класс окна будет WS_POPUP, то окно создается нужного размера.
Вопрос: можно ли получить размер окна больше, чем разрешение экрана?

2) Из-за наличия в окне кнопок и прочих элементов пользуюсь WM_HOTKEY для перехвата сочетаний Ctrl+N и т.д.
Однако, перехватчик срабатывает не только в моей программе, но и в сторонних (Блокнот).
Вопрос: можно ли передать этот HotKey дольше, если он пришел не моему окну. Отследить, куда он предназначался я могу по GetActiveWindow а как передать не знаю
Alexan-Dwer вне форума Ответить с цитированием
Старый 19.11.2013, 14:01   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

1) Никогда не пробовал - зачем вообще такое нужно? Попробуйте поменять размер после создания окна. Смотрите MoveWindow() или SetWindowPos()

2) Нет, это глобальный перехватчик. Кроме того, знать кому предназначен hotkey просто невозможно. Например в куче программ Ctrl-S это save - которому окну надо будет передать. Читайте про TranslateAccelerator()
waleri вне форума Ответить с цитированием
Старый 19.11.2013, 15:45   #3
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
По умолчанию

1) SetWindowPos пробовал, не помогло.
Нужно для проверки интерфейса. Само окно программы большое, но у пользователя разрешение может быть меньше, чем размер окна. Тогда он не увидит часть интерфейса. Можно конечно изменять разрешение автоматически и возвращать его назад, но некоторые предпочитают двигать само окно, не трогая настроек экрана.
По-моему, эта проблема из-за особенности Windows, а именно функции "Развернуть окно на весь экран".

2) Проблема не в том, что бы узнать, кому принадлежит HotKey. Мне нужно грамотно его переслать, причем, в большинстве программ как я понял, используется не WM_HOTKEY, а WM_KEYDOWN, и далее идет обработка, что нужно сделать. У меня так тоже было, но из-за всяких Edit’ов и кнопок, которые перехватывают WM_KEYDOWN и изменяют его, я перешел на WM_HOTKEY. Есть идея, отправлять WM_KEYDOWN на дескриптор окна, полученный через GetActiveWindow. Но, как это правильно организовать…

P.S. Суть TranslateAccelerator не понял.

Последний раз редактировалось Alexan-Dwer; 19.11.2013 в 15:47.
Alexan-Dwer вне форума Ответить с цитированием
Старый 19.11.2013, 16:55   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Hot key принадлежит вам - пересылать его некуда. Не понимаю - зачем вам пересылать hotkey? Что значит "в большинстве программ"? Очень мало программ используют WM_HOTKEY и обычно никуда его не пересылают.

TranslateAccelerator - реализация hot key в пределах одного (нужного) окна.

Я не знаю, чтоб у окон были ограничения на размеры, но, существует WM_GETMINMAXINFO - перехватывайте и прописывайте все что нужно.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер окна программы Kambalin Помощь студентам 4 29.03.2013 05:37
Изменить размер окна Pein95 Windows Forms 2 17.01.2013 20:56
Размер окна в С++ Krezol Помощь студентам 1 02.04.2010 20:53
Размер окна t3ns0r Общие вопросы C/C++ 2 29.11.2008 21:22
Размер окна в зависимости от размера окна Reverent JavaScript, Ajax 1 02.02.2008 15:49