Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DialogBox 
:(
    Опции темы
Levenson
Дата 26.11.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите пожалуйста. Мне указать функцию реализованную в классе CDatabaseNew.

Если пишу так то все компелируется но вылетает при нажатии кнопки.
Код

DialogBox(hInst,MAKEINTRESOURCE(dialogDbNew.IDD),hWnd, (DLGPROC&)CDatabaseNew::CreateNew)


Если пишу вот так 
Код

DialogBox(hInst,MAKEINTRESOURCE(dialogDbNew.IDD),hWnd, &CDatabaseNew::CreateNew);


получаю это 
error C2664: 'DialogBoxParamW' : cannot convert parameter 4 from 'INT_PTR (__stdcall CDatabaseNew::* )(HWND,UINT,WPARAM,LPARAM)' to 'DLGPROC'

Причина ошибки ясна, просто подскажите как это можно сделать.

Заранее спасибо.
PM MAIL   Вверх
Damarus
Дата 26.11.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



CreateNew должен быть статическим методом класса CDatabaseNew:
Код
class CDatabaseNew
{
    ..............
public:
    static INT_PTR CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

    ..............
};


Добавлено @ 11:54 
И соответственно:
Код
DialogBox(hInst, MAKEINTRESOURCE(dialogDbNew.IDD), hWnd, &CDatabaseNew::CreateNew);


Это сообщение отредактировал(а) Damarus - 26.11.2006, 11:56
PM MAIL ICQ Jabber   Вверх
Levenson
Дата 26.11.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо все заработало. 
PM MAIL   Вверх
Levenson
Дата 28.11.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тут у меня возник новый вопрос, по поводу этого же класса.
Если метод DialogBox статический значит он может вызывать только статичесские методы и изменять статические члены класса.

error C2352: 'CDatabaseNew::InitData' : illegal call of non-static member function

Как тут быть? все элементы делать статическими? Ладно тогда при попытке присвоить статическому члену класса значение переменной,

Код

void CDatabaseNew::InitData(HWND hDlg) {
    char szBufer[BufSize] = {0}; // buffer for receiving data of items
    int result = 0;

    result = GetDlgItemTextA(hDlg, IDC_HOSTNAME_EDIT, szBufer, sizeof(szBufer));
    cHostName = szBufer;
}
 

то компилятор ругается:
error LNK2001: unresolved external symbol "private: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > CDatabaseNew::cHostName" (?cHostName@CDatabaseNew@@0V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A)



Это сообщение отредактировал(а) Levenson - 28.11.2006, 19:34
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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