|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.11.2013, 13:15 | #1 |
Форумчанин
Регистрация: 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 а как передать не знаю |
19.11.2013, 14:01 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
1) Никогда не пробовал - зачем вообще такое нужно? Попробуйте поменять размер после создания окна. Смотрите MoveWindow() или SetWindowPos()
2) Нет, это глобальный перехватчик. Кроме того, знать кому предназначен hotkey просто невозможно. Например в куче программ Ctrl-S это save - которому окну надо будет передать. Читайте про TranslateAccelerator() |
19.11.2013, 15:45 | #3 |
Форумчанин
Регистрация: 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. |
19.11.2013, 16:55 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Hot key принадлежит вам - пересылать его некуда. Не понимаю - зачем вам пересылать hotkey? Что значит "в большинстве программ"? Очень мало программ используют WM_HOTKEY и обычно никуда его не пересылают.
TranslateAccelerator - реализация hot key в пределах одного (нужного) окна. Я не знаю, чтоб у окон были ограничения на размеры, но, существует WM_GETMINMAXINFO - перехватывайте и прописывайте все что нужно. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Размер окна программы | 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 |