Помогите, пожалуйста, с CreateDialog
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'
В чем дело?
А вообще-то это тема не раз обсуждалась.
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
);
Вот и всё =)