Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MFC]Как получить доступ к методам??? CToolBar m_wndPaneBar; 
V
    Опции темы
SAVEL
Дата 2.5.2008, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Дело в том, что я пытаюсь реализовать програмку типа PAINT в MFC! Делаю её по аналогу как описано на РЕАЛКОДИНГЕ (глава 11 [URL=http://realcoding.net/article/view/1994 http://realcoding.net/article/view/1994[/URL] Да тут проблемка такая, что при описании там тонна синтаксических ошибок, и приходится самому разбираться в коду!

В общем есть панель инструментов: карандаш, распылитель ... Как заставить их работать, может есть литература у кого? Или ссылочка на документацию? 

Т.к. ступор: Как получить достум к методам СToolBarCtrl если  объект я  объявил как CToolBar? Вот опишу кусочек кода с реалкодинга, где описывается как эту прогу делать:

Код

void CMainWnd::OnPane(UINT nID)
{
// nID — идентификатор команды, ассоциированной с кнопкой 
UINT m_nIndex = nID - ID_PANEERASE; 
 // Порядковый номер кнопки 
// Запоминаем идентификатор нажатой кнопки 
m_wndChild.m_nToolNum = nID; //Эта строчка вообще меня в ступор вводит, тк. не описывается что ////за член m_wndChild ?
// Сбрасываем все кнопки 
for(int i = ID_PANEERASE; i <= ID_PANEOVAL; i++) 
//m_wndPaneBar.GetToolBarCtrl().CheckButton(i, FALSE); // CheckButton принадлежит СToolBarCtrl, а /////так на СИ++ не пишется
// Определяем нажатую кнопку 
BOOL bCheck = TRUE;
m_wndPaneBar.GetToolBarCtrl();//.IsButtonChecked(nlD); //так нельзя программировать
// "Нажимаем" ее  
//m_wndPaneBar.GetToolBarCtrl();//.CheckButton(nID, &bCheck);
}


Буду весьма признателен если кто - нибуть поможет мне разобраться с этой загагулиной!!!

Это сообщение отредактировал(а) SAVEL - 2.5.2008, 16:21
--------------------
В любых делах при максимуме сложности подход к проблеме всё-таки один! Желание - это множество возможностей, а нежелание - это множество причин !!!
PM MAIL   Вверх
Earnest
Дата 5.5.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(SAVEL @  2.5.2008,  17:20 Найти цитируемый пост)
//m_wndPaneBar.GetToolBarCtrl().CheckButton(i, FALSE); // CheckButton принадлежит СToolBarCtrl, а /////так на СИ++ не пишется


Цитата(SAVEL @  2.5.2008,  17:20 Найти цитируемый пост)
m_wndPaneBar.GetToolBarCtrl();//.IsButtonChecked(nlD); //так нельзя программировать

C чего ты взял? Именно так и можно и нужно.


--------------------
...
PM   Вверх
SAVEL
Дата 5.5.2008, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да m_wndPaneBar принадлежит СToolBar, а если я меняю на СToolBarCtrl, то уменя все СToolBarовские функции летят!!!

Ну так?

Цитата

Цитата(SAVEL @  2.5.2008,  17:20 )
m_wndPaneBar.GetToolBarCtrl();//.IsButtonChecked(nlD); //именно 

C чего ты взял? Именно так и можно и нужно.

--------------------
В любых делах при максимуме сложности подход к проблеме всё-таки один! Желание - это множество возможностей, а нежелание - это множество причин !!!
PM MAIL   Вверх
Earnest
Дата 6.5.2008, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(SAVEL @  5.5.2008,  23:57 Найти цитируемый пост)
Да m_wndPaneBar принадлежит СToolBar

Как это "принадлежит"? Хочешь сказать, что это переменная типа CToolBar? 
И не надо ничего заменять. У ToolBar есть метод GetToolBarCtrl, который возвращает ссылку на внутренний CToolBarCtrl; а у того, в свою очередь есть все нужные тебе методы. 
Т.е. именно так: m_wndPaneBar.GetToolBarCtrl().IsButtonChecked(nlD);

Разве что у тебя среда древняя, из времен, когда CToolBar не был построен на основе CToolBarCtrl...


--------------------
...
PM   Вверх
SAVEL
Дата 6.5.2008, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В интерфейсе класса : 
Код

public:
                              CToolBar    m_wndPaneBar;

Цитата

Earnest
У ToolBar есть метод GetToolBarCtrl, который возвращает ссылку на внутренний CToolBarCtrl; а у того, в свою очередь есть все нужные тебе методы. 
Т.е. именно так: m_wndPaneBar.GetToolBarCtrl().IsButtonChecked(nlD);


Я не знал, что так можно программировать, чем-то Delphi напоминает, но мы в С++!
Всё ясно, да только на практике картина обстоит таким образом:

Код

m_wndPaneBar.GetToolBarCtrl().CheckButton(i, FALSE); 
// Определяем нажатую кнопку 
BOOL bCheck = m_wndPaneBar.GetToolBarCtrl().IsButtonChecked(nID); 
// "Нажимаем" ее  
m_wndPaneBar.GetToolBarCtrl().CheckButton(nID, &bCheck);


Error    3    error C2027: use of undefined type 'CToolBarCtrl'    
Error    4    error C2228: left of '.CheckButton' must have class/struct/union    
Error    5    error C2027: use of undefined type 'CToolBarCtrl'    
Error    6    error C2228: left of '.IsButtonChecked' must have class/struct/union    
Error    7    error C2027: use of undefined type 'CToolBarCtrl'    
Error    8    error C2228: left of '.CheckButton' must have class/struct/union    

Вот, што тут поделаешь?

Это сообщение отредактировал(а) SAVEL - 6.5.2008, 18:00
--------------------
В любых делах при максимуме сложности подход к проблеме всё-таки один! Желание - это множество возможностей, а нежелание - это множество причин !!!
PM MAIL   Вверх
Earnest
Дата 8.5.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(SAVEL @  6.5.2008,  18:59 Найти цитируемый пост)
Я не знал, что так можно программировать, чем-то Delphi напоминает, но мы в С++!

И как, по твоему, в C++ надо?

Версия MSVC какая? Варианта два: либо она такая старая, что CToolBarCtrl еще нет - тогда выкини ее нафиг. Либо почему-либо не подключен файл AfxCmn.h, где это дело определено. Обычно его прописывают в StdAfx.h

Добавлено через 59 секунд
Причем скорее второе, т.к. на GetToolBarCtrl компилятор вроде не ругается - значит, есть такой метод. 


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


Шустрый
*


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

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



Всё я въехал! Спасиб! smile 

 smile  smile  smile  smile 

Это сообщение отредактировал(а) SAVEL - 10.5.2008, 17:16
--------------------
В любых делах при максимуме сложности подход к проблеме всё-таки один! Желание - это множество возможностей, а нежелание - это множество причин !!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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