请问如何设计DLL(带窗体的) —Win32

stivenjia 2007-11-27 04:09:46
例如:

#ifdef WNDDLL_EXPORTS
#define WNDDLL_API __declspec(dllexport)
#else
#define WNDDLL_API __declspec(dllimport)
#endif
// This class is exported from the WndDll.dll
class WNDDLL_API CWndDll
{
public:
CWndDll(void);
// TODO: add your methods here.
~CWndDll(void);
public:
virtual DWORD CALLBACK DllWndProc(HWND hWnd,UINT unMsg,WPARAM wParam,LPARAM lParam);
//我写到类体中就完蛋了。
DWORD Create(HWND hParent,const char *lpTitle,HINSTANCE hInst);
};

extern WNDDLL_API int nWndDll;
WNDDLL_API int fnWndDll(void);

extern DWORD CALLBACK DllWndProc(HWND hWnd,UINT unMsg,WPARAM wParam,LPARAM lParam);
//就是这个回调函数的问题,将该函数写到类体中就over了

WNDDLL_API DWORD Create(HWND hParent,const char *lpTitle,HINSTANCE hInst);

在Create中就是调用一个DialogBox,原码就不贴了。
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrace 2007-11-27
  • 打赏
  • 举报
回复
调用方式不一样咯。

系统要求 stdcall, 写在类里面是 thiscall
stivenjia 2007-11-27
  • 打赏
  • 举报
回复
Thank you!
能说一下为什么吗?
vrace 2007-11-27
  • 打赏
  • 举报
回复
把 DllWndProc 放在类里,做成 static 的试试.. 这个回调的函数做成类的非 static 成员的话肯定不行的.
stivenjia 2007-11-27
  • 打赏
  • 举报
回复
恩!在DLL中_stdcall貌似被编译为' '不知道为什么?
如果添加extern关键字则被正常编译但在类中不能这么做
vrace 2007-11-27
  • 打赏
  • 举报
回复
放到类里面回调函数 DllWndProc 的类型就不对了

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧