描述:
我有一短信服务器,最近因为机器莫名其妙的重新启动,所以需要加入到Windows服务中,实现自动重新启动。
向现有工程(MFC)添加了ATL支持,自动添加了几个文件和一个类,是ATLExe什么什么的,而后我把添加的类改成了这样:
class CSMSEngineModule : public ATL::CAtlServiceModuleT< CSMSEngineModule, IDS_APPNAME >
{
public:
DECLARE_LIBID(LIBID_SMSEngineLib);
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_SMSENGINE, "{2A1BE4F3-F53A-47B4-98F3-1E194383C382}");
HRESULT InitializeSecurity() throw()
{
// TODO : 调用 CoInitializeSecurity 并为服务提供适当的
// 安全设置
// 建议 - PKT 级别的身份验证、
// RPC_C_IMP_LEVEL_IDENTIFY 的模拟级别
// 以及适当的非空安全说明符。
return S_OK;
}
//CAtlServiceModuleT::on
};
CSMSEngineModule _AtlModule;
*******************************************
编译的时候就说CAtlServiceModuleT不属于ATL命名空间,CAtlServiceModuleT 基类为定义,相关的函数应该属于某个类等错误,烦死了。
我添加ATL支持的时候编译已经通过了。但是用了ATL::CAtlServiceModuleT就不行。
解决方案1:
有界面的当然由问题了。你想想,你的界面显示在那个用户的桌面上?
解决方案2:MFC和ATL两者有冲突!这是微软都承认的!
解决方案3:我觉得你应该用atl,同时支持mfc