Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перетаскивание окна за опред. обдасть, этого окна 
V
    Опции темы
MoZy
  Дата 5.6.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: 1
Всего: 0



Код

...
case WM_MOUSEMOVE:
    
    if(wParam==MK_LBUTTON)
    {
     //MOVE 
    GetWindowRect(hwndMain,&rc);
    width = rc.right-rc.left;
    height = rc.bottom-rc.top;
    
    rc.bottom=rc.top+25;
    GetCursorPos(&pt);

    if(PtInRect(&rc,pt)!=0)
     {
         if(down==false)
         {
             xb=LOWORD(lParam);
             yb=HIWORD(lParam);
             down=true;
         } 
        if(down==true)
        {
                MoveWindow
                (
                hwndMain,
                rc.left+LOWORD(lParam)-xb,
                rc.top+HIWORD(lParam)-yb,
                width,
                height,
                TRUE
                );
        }    
        
    }else down=false;
     break;
    }else down=false;   
return DefWindowProc (hwnd, nMsg, wParam, lParam);

case WM_LBUTTONUP:
     down=false;
     xb=0;
     yb=0;      
return DefWindowProc (hwnd, nMsg, wParam, lParam);
...

Вобщем здесь я пытаюсь окно перетаскивать за опред. область. Но проблема в том, что когда курсор вылетает за область моего окна, то естественно сообщение МАУСМУВ не генерится.
Может кто знает более простой способ перетаскивания окна за опред. область? Подскажите.
А если нет другого, то может есть какое-то сообщение типа NC, чтобы контролировать курсор вне окна. Ну вобщем помогите чем сможете. 
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
Damarus
Дата 5.6.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 4
Всего: 29



Вот пример (VS2005 UNICODE): 

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  MoZy.zip 2,84 Kb
PM MAIL ICQ Jabber   Вверх
GremlinProg
Дата 6.6.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Не смотрел прикрепленный файл, но вместо WM_MOUSEMOVE нужно обрабатывать WM_NCHITTEST в нем передается точка в экранных координатах. Если точка входит в твою область, за которую можно перетаскивать окно, то нужно просто вернуть HTCAPTION. Это на много проще, чем MoveWindow.

PS: проблема решается на форуме довольно часто. Все так стоит иногда использовать "поиск" 

Это сообщение отредактировал(а) GremlinProg - 6.6.2006, 13:51


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
MoZy
Дата 6.6.2006, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: 1
Всего: 0



 smile Вобщем БОЛЬШОЕ спасибо.
 
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.