Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите, пожалуйста, с CreateDialog

8.2K
02 декабря 2004 года
SDRAM DIMM
8 / / 30.11.2004
У меня класс, управляющий Dialogом, типа такого:

class CMyClass
{

public:
CMyClass();
~CMyClass();
BOOL CALLBACK DlgProc(
HWND hdlg,
UINT msg,
WPARAM wparam,
LPARAM lparam);
...

HWND Create(HWND parent);
};


CMyClass::CMyClass()
{

}

CMyClass::~CMyClass()
{

}


BOOL CALLBACK CMyClass::DlgProc(
HWND hdlg,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{

...

}


...


HWND CMyClass::Create(HWND parent)
{
HWND hwnd;

hwnd=CreateDialog(
(HINSTANCE)GetWindowLong(parent, GWL_HINSTANCE),
MAKEINTRESOURCE(IDD_DIALOG),
parent,
DlgProc
);

return hwnd;

}

Компилятор (MS Visual Studio.NET 2002) ругается неприличными словами и выдает следующее:

error C2664: 'CreateDialogParamA' : cannot convert parameter 4 from 'BOOL (HWND,UINT,WPARAM,LPARAM)' to 'DLGPROC'

В чем дело?
3
02 декабря 2004 года
Green
4.8K / / 20.01.2000
Метод DlgProc должен быть статическим.
А вообще-то это тема не раз обсуждалась.
7.3K
04 декабря 2004 года
BlackCode
16 / / 11.10.2004
1. Как Green заметил DlgProc и все функции с переменными класса безусловно должны быть статическами.

2. в место
bool __stdcall DlgProc(HWND,UINT,WPARAM,LPARAM);

используй

long __stdcall DlgProc(HWND,UINT,WPARAM,LPARAM);

3. в место
hwnd=CreateDialog(
(HINSTANCE)GetWindowLong(parent, GWL_HINSTANCE),
MAKEINTRESOURCE(IDD_DIALOG),
parent,
DlgProc
);

используй

hwnd=CreateDialog(
(HINSTANCE)GetWindowLong(parent, GWL_HINSTANCE),
MAKEINTRESOURCE(IDD_DIALOG),
parent,
(DLGPROC)DlgProc
);

Вот и всё =)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог