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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать передачу сообщений другой функции!HELP 
:(
    Опции темы
Евгений
Дата 19.11.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 14.6.2006
Где: г. Невинномысск

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



Help если сможете!

Имеется сласс:
class DialogGraph
{
public:
    HWND hWndDlg;
    bool Cheked;
public:
    DialogGraph();
    BOOL CreateDlgGraph(HINSTANCE hInstance,LPCTSTR lpTemplate,HWND hWndParent);
    BOOL DialogDlgGraph(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
protected:
    static BOOL CALLBACK DialogDlg(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
};

Функция CreateDlgGraph создает диалоговое окно из файла ресурсов.
Как сделать так чтобы сообщения передавались от функции DialogDlg, к функции DialogDlgGraph. Так чтобы потом в Функции DialogDlgGraph можно было изменять переменные класса.
Попробовал так:
BOOL CALLBACK DialogGraph::DialogDlg(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    DialogGraph *pWindow;
        
    if ( uMsg==WM_INITDIALOG)
    {   
        pWindow = (DialogGraph *) (GetWindowLong(hWnd,DWL_DLGPROC));

        SetWindowLong(hWnd, DWL_USER, (LONG) pWindow);
    }
    else
        pWindow=(DialogGraph *)GetWindowLong(hWnd, DWL_USER);


    if ( pWindow )
        return pWindow->DialogDlgGraph(hWnd, uMsg, wParam, lParam);
    else
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

Работает только, вот переменную Cheked не разрешает изменять, выдает ошибку.
PM MAIL WWW   Вверх
Sergio
Дата 19.11.2006, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



А что значит "передавать сообщение "?
PM MAIL ICQ   Вверх
Aleksandor
Дата 19.11.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


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

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



Как то очень наворочено. Может SendDlgItemMessage поможет? А вообще непонятно куда и зачем слать сообщение. Диалоговая процедура шлет сообщение другой диалоговой поцедуре?


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


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 14.6.2006
Где: г. Невинномысск

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



Дело в том что я создаю диалоговое в классе, а функция 

BOOL CALLBACK DialogDlg(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 

обязательно должна быть статической, иначе не работает.
Мне надо чтобы эта функция к примеру вызывала другу функцию у меня это

BOOL DialogDlgGraph(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

 и передавала ей параметры, хотябы WPARAM wParam, LPARAM lParam.
Я пробовал такой вариант и он не работает:
DialogGraph Dialog;
Dialog.DialogDlgGraph(hwndDlg, uMsg, wParam, lParam);

Пробовал ещё вариант который предложил выше, он работает только не разрешает присваивать допустим public переменным (Cheked)  какое либо значение, а мне надо наоборот! 

Ну кто нибудь осилит? smile 
PM MAIL WWW   Вверх
Earnest
Дата 22.11.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Тебе надо связать hWnd и экземпляр класса (объект). Способов много, разной степени извратности.
Можно засовывать указатель на экземпляр класса в расширенные данные окна. Можно создать статическое (глобальное) отображение (map) hWnd->экземляр класса, как это делает MFC. И т.д.
После того, как выберешь способ установления объекта по hWnd, все просто: в статической оконной процедуре получаешь указатель на объект и вызываешь функцию для него.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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