Диалог вызываемый из ActiveX контрола.
От: radiocrash  
Дата: 26.03.07 06:01
Оценка:
Здравствуйте.
Создал контрол кнопку при помощи волшебника MFC ActiveX Соntrol(кнопка).Назначение такое: при нажатии кнопки должно вывалиться окно подтверждения (диалог).Добавил класс Ackn(Cdialog). Всвязи с этим возникает две проблемы.
1.Добавил event в классе кнопки CWCCButtonControlCtrl ClickAcknOk, его вызывает функция FireClickAcknOk(void). Теперь если я вызываю этот метод из
CWCCButtonControlCtrl::OnClick(USHORT iButton)
{
} то при построении и потом при тестировании все хорошо и метод срабатывает(только это нафик не нужно).
А если я пытаюсь вызвать его из
Ackn::OnBnClickedOk(){
CWCCButtonControlCtrl::FireClickAcknOk()} предварительно прицепив WCCButonControl.h в Ackn.cpp и сделав OnBnClickedOk() public.
То выдается ошибка "CWCCButtonControlCtrl::FireClickAcknOk() illegal call of non-static member function".
2.Нужно чтобы окно подтверждения вылезало там, где физически находится кнопка. Можно конечно привязать к координатам мыши а можно к координатам кнопки. Как получить координаты кнопки, и в какой метод Ackn потом их передaвать.пробовал играться с MoveWindow но получить абсолютные координаты кнопки так и не смог.
ПОМОГИТЕ ЛЮДИ ДОБРЫЕ !!!
Re: Диалог вызываемый из ActiveX контрола.
От: radiocrash  
Дата: 26.03.07 11:21
Оценка:
Удалено избыточное цитирование. Исправлено форматирование текста. — SchweinDeBurg

R>То выдается ошибка "CWCCButtonControlCtrl::FireClickAcknOk() illegal call of non-static member function".


Разобрался, CWCCButtonControlCtrl не обьект как таковой, а класс. Естественно CWCCButtonControlCtrl::FireClickAcknOk() бессмысленный набор букв. Попробовал

Ackn::OnBnClickedOk()
{
CWCCButtonControlCtrl button1;
button1.FireClickAcknOk();
}

строится хорошо и без ошибок, но при тестировании ивент не срабатывает.
Есть подозрение, что button1 и моя кнопка это два разные объекта.

А если так:

CWCCButtonControlCtrl *button1;
button1->FireClickAcknOk();

То при тестировании вылетает ошибка с просьбой закрыть Тест контейнер.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.