新手请教两个问题,请各位老大指点一下~~

ChocoboY 2004-09-24 10:32:14
第一.使用ATL向导实现事件时,并没有像书上那样去实现一个CProxy_IEvent类,而只是把事件接口作如下声明
__event __interface IEvent;
然后在程序激活事件的代码就简单的 __raise OnClick1(x, y);就可以了,这样做有什么不同

第二.ATL创建DLL项目时,其CATLDllModuleT实现了DLLMAIN等函数...我如何得到DLLMAIN函数中的HINSTANCE呢,CATLDLLModuleT似乎把这个参数给丢了....
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChocoboY 2004-09-24
  • 打赏
  • 举报
回复
谢了,谢了
HINSTANCE ModuleFromAddress(PVOID pv)
{
MEMORY_BASIC_INFORMATION mbi;
return ((VirtualQuery(pv, &mbi, sizeof(mbi)) != 0) ?
(HINSTANCE)mbi.AllocationBase : NULL);
}

HINSTANCE hDllInst = ModuleFromAddress(DllMain);

这样可以得到DLL 的HINSTANCE;
aspnetwuxueyou 2004-09-24
  • 打赏
  • 举报
回复
If you create an ATL executable, you will find _tWinMain.
and ifyou create an ATL dll, you will find DllMain.
atl dll/executable和普通的win32 dll/executable的入口函数是一样的
aspnetwuxueyou 2004-09-24
  • 打赏
  • 举报
回复
In ATL dll you can find
/////////////////////////////////////////////////////////////////////////////
// DLL Entry Point
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
hInstance;
return _AtlModule.DllMain(dwReason, lpReserved);
}

DllMain calls CATLDllModuleT.DllMain member.
dodont 2004-09-24
  • 打赏
  • 举报
回复
2.
HINSTANCE ModuleFromAddress(PVOID pv)
{
MEMORY_BASIC_INFORMATION mbi;
return ((VirtualQuery(pv, &mbi, sizeof(mbi)) != 0) ?
(HINSTANCE)mbi.AllocationBase : NULL);
}

HINSTANCE hDllInst = ModuleFromAddress(DllMain);

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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