【问题标题】:c++ dll CreateDialog errorc++ dll CreateDialog错误
【发布时间】:2014-05-28 10:19:51
【问题描述】:

我在 C++ Dll 中遇到了一些错误,你能帮我解决吗? 错误如下:

第一个错误

错误 C3867: '&Zfx3DDental::Graphic_Dlg_Dll': chiamata di funzione senza elenco di argomenti; utilizzare 'Zfx3DDental::Graphic_Dlg_Dll' per creare un puntatore al membro

翻译

在没有参数列表的情况下调用函数,使用 Zfx3DDental::Graphic_Dlg_Dll' 来创建指向成员的指针

第二个错误

IntelliSense: l'argomento di tipo "LRESULT (__stdcall Zfx3DDental::*)(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)" è incompatibile con il parametro di tipo "DLGPROC"

翻译

...类型的参数与“DLGPROC”类型的参数不兼容

代码(文件.cpp)

void ZFX3DDENTALDLL Zfx3DDental::GraphicShow_Dll(HWND hWnd)
{   
winHwnd = CreateDialog(hinst, MAKEINTRESOURCE(IDD_FORMVIEW), hWnd, Graphic_Dlg_Dll); //Here I got the error!!!
if (winHwnd == NULL)
{
    MessageBox(hWnd, TEXT("Error"), TEXT("Error"), MB_OK);
}
InitIstance(winHwnd);
ShowWindow(winHwnd, SW_SHOW);
DWORD d = GetLastError();
}

LRESULT CALLBACK Zfx3DDental::Graphic_Dlg_Dll(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
....
return DefWindowProc(hDlg, msg, wParam, lParam);;
}

标题

#define ZFX3DDENTALDLL __declspec(dllexport)
#define ZFX3D_ID long

class Zfx3DDental
{
....
public:
Zfx3DDental();
~Zfx3DDental();

void ZFX3DDENTALDLL GraphicShow_Dll(HWND hWnd);
    ....
private:
LRESULT   CALLBACK Graphic_Dlg_Dll(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
....
};

也许问题出在课程上?

【问题讨论】:

    标签: c++ dll callback dialog


    【解决方案1】:

    问题似乎是 CreateDialog 的最后一个参数必须是全局函数,而您传递的是类方法。有关详细信息,请参阅此问题:

    Use class member as WNDPROC/DLGPROC with or without global

    【讨论】:

    • 谢谢,原来是这个问题,现在可以了,回调函数必须是全局的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多