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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалог - вся область - множество перет. точек. 
:(
    Опции темы
En_t_end
Дата 27.12.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 20



Нужно создать диалог с возможностью его перетаскивания за любую точку, кроме есно контролов.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Romikgy
Дата 27.12.2005, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Имхо обрабатывай WM_MOUSEMOVE в процедуре диалога, и если нажата кнопка мыши тащи smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Aleksandor
Дата 27.12.2005, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: 10
Всего: 12



Может вот такой код даст зацепку.. Сам не пробовал smile

Код

case WM_MOUSEMOVE: /* allow dragging by the client area */ 
              GetCursorPos( &pt ); 
              SendMessage( hDlg,WM_SYSCOMMAND,SC_MOVE+2, MAKELPARAM( pt.x,pt.y ) ); 
  break; 


Другой способ
Код

case WM_NCHITTEST: 
  // Move dialog by dragging client area with mouse 
  if (DefWindowProc(hwndMainDlg, WM_NCHITTEST, wParam, lParam) == HTCLIENT) { 
       SetWindowLong(hwndMainDlg, DWL_MSGRESULT, HTCAPTION); 


       return TRUE; 
  } else { 
       return FALSE; 
  } 


 case WM_NCLBUTTONDOWN: 
  // Display move cursor if dragging dialog client 
  if (DefWindowProc(hwndMainDlg, WM_NCHITTEST, wParam, lParam) == HTCLIENT) { 
       SetCursor(LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MOVE))); 
  } 
  return FALSE; 



--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
En_t_end
Дата 27.12.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 20



Romikgy
Aleksandor
Сенкс, пойду пробывать.
PM MAIL ICQ Skype GTalk Jabber   Вверх
JoyEx
Дата 27.12.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

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



Romikgy
Aleksandor


Зачем козу на возу? smile

Цитата(En_t_end @ 27.12.2005, 14:23)
Нужно создать диалог с возможностью его перетаскивания за любую точку, кроме есно контролов.


Проще всего так

Код

void CNewDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    POINT pt;
    GetCursorPos (&pt);
    SendMessage (WM_NCLBUTTONDOWN , HTCAPTION, pt.x | pt.y << 16);

    CDialog::OnLButtonDown(nFlags, point);
}





--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Fixin
Дата 27.12.2005, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


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

Репутация: 8
Всего: 18



Во, во. Именно
PM MAIL ICQ   Вверх
En_t_end
Дата 28.12.2005, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 20



JoyEx
Сенкс, тоже попробую...
PM MAIL ICQ Skype GTalk Jabber   Вверх
KAdot
Дата 28.12.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



еще можно так:
Код

    case WM_MOUSEMOVE:
    {
        if(MK_LBUTTON & wParam) SendMessage(hWnd, WM_SYSCOMMAND, SC_MOVE+1, 0);

        return TRUE;
    }
    break;

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.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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