请问如何设计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,原码就不贴了。
...全文
51 点赞 收藏 5
写回复
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 的类型就不对了
回复 点赞
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6376

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告