Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Трабл за траблом!!!! Как правильно обратится к объекту класса 
:(
    Опции темы
NULL
Дата 12.9.2003, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



сделал я как Duda посоветовал...
но вот новый трабл.
на диалоге чекбокс я проверяю
Код

void CDragButton::OnMouseMove(UINT nFlags, CPoint point)
{
 CDrag_ButtonDlg dlg;
                if(nFlags & MK_LBUTTON){
 static CPoint last_point = point;
 CWnd* pPWnd = GetParent();
 CRect rect;

 GetWindowRect(&rect);
 pPWnd->ScreenToClient(&rect);
 rect.OffsetRect(point - last_point);  
 [B]if(dlg.GetState() == BST_CHECKED)[/B]//Access failed!
                                       MoveWindow(&rect);  
}

CButton::OnMouseMove(nFlags, point);
}

withstupid.gif
PM MAIL ICQ   Вверх
mr.DUDA
Дата 12.9.2003, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Блин, как же ты работаешь с чекбоксом, и вообще !!! adv/abuse.gif

Снова идём в ClassWizard, и добавляем Member Variable для чекбокса, только тип переменной - "Value" и "BOOL" (или "bool"), имя выбираем любое (например "m_check1"). В начало OnMouseMove добавляем "обновление" переменной, и юзаем её как обычную BOOL'ку:
Код
void CDragButton::OnMouseMove(UINT nFlags, CPoint point)
{
   UpdateData(TRUE);

   if(  (nFlags & MK_LBUTTON)                  
        && m_check1 )  // сразу нужно проверять, а не внутри!
   {
        static CPoint last_point = point;
        CWnd* pPWnd = GetParent();
        CRect rect;
        GetWindowRect(&rect);
        pPWnd->ScreenToClient(&rect);
        rect.OffsetRect(point - last_point);  

        MoveWindow(&rect);
   }
   CButton::OnMouseMove(nFlags, point);
}


Это сообщение отредактировал(а) mr.DUDA - 12.9.2003, 17:16


--------------------
user posted image
PM MAIL WWW   Вверх
NULL
Дата 12.9.2003, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



проверял. всеравно выбивает =(((((((((((
PM MAIL ICQ   Вверх
NULL
Дата 12.9.2003, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



dlg.m_check.GetState() == BST_CHECKED - проблема тут када я обращаюсь к объекту другог класса... и как этот трабл решить я не знаю =((((((((
помогите
PM MAIL ICQ   Вверх
mr.DUDA
Дата 12.9.2003, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Вот тебе ссылочка:
http://duda.newmail.ru/DlgTest.zip

Там лежит полностью готовый пример, с чекбоксом и перетягиваемой кнопкой !!!

Фича в том, что из CDragButton::OnMouseMove нежелательно лезть в какой-то внешний (а тем более хозяйский smile.gif) диалог и тем более опрашивать свойства его элементов. Поэтому я сделал так: положил в кнопку переменную "BOOL m_bAllowDrag", и написал обработчик события "клик чекбокса" в диалоге, который только и делал, что менял "m_Btn.m_bAllowDrag" на противоположное значение. Соответственно, кнопка проверяет это значение и "решает", перемещаться ей в OnMouseMove вслед за курсором, или нет.


--------------------
user posted image
PM MAIL WWW   Вверх
NULL
Дата 12.9.2003, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасиба!
разобрался наконецто (посмотрев исходник)=))
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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