如何在ATL中使用CWinApp类中的成员变量m_hDevMode

lhz113 2007-12-24 03:43:48
本人在设置打印机纸张大小的时候
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(m_hDevMode);
编译有错误,因为m_hDevMode是属于CWinApp类的,而我建的是ATL.
CWinApp这个类是属于afxwin.h的.
网上说在ATL中调用MFC头文件的话要放在
#include <atlbase.h>前面。
本来已经有一个头文件#include "afxres.h"放在#include <atlbase.h>前面编译没问题。
但是现在把#include <afxwin.h>这个头文件放在#include <atlbase.h>前面的话就会出现ATL和MFC的冲突。
望高手解答!!!
...全文
289 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
都是很好的建议! 值得学习
回复
这个简单啊,网上搜一下就得到答案了.
回复
lhz113 2007-12-24
如果我把#include <afxwin.h>放在#include <atlbase.h>之前的话就会出现以下问题。

F:\work\SCED210v2\05编码\SCED_Label\Log.h(52) : error C2872: 'CString' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\PrePrint.h(59) : error C2872: 'CFont' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\PrePrint.h(62) : error C2872: 'CRect' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\PrePrint.h(68) : error C2872: 'CPen' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\PrePrint.h(71) : error C2872: 'CSize' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\PrePrint.h(72) : error C2872: 'CDC' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\PrePrint.h(76) : error C2872: 'CDC' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\PrePrint.h(79) : error C2872: 'CFont' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\PrePrint.h(80) : error C2872: 'CRect' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\BaseLabel.h(67) : error C2872: 'CString' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\BaseLabel.cpp(368) : error C2872: 'CRect' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\BaseLabel.cpp(396) : error C2872: 'CPen' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\BaseLabel.cpp(840) : error C2872: 'CString' : ambiguous symbol
F:\work\SCED210v2\05编码\SCED_Label\BaseLabel.cpp(923) : error C2872: 'CString' : ambiguous symbol
回复
飞哥 2007-12-24
是不是啊,那就怪了,我这边就行

stdafx.h


#define STRICT
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif
#define _ATL_APARTMENT_THREADED

#include <afxres.h>
#include <afxwin.h>
#include <afxdisp.h>

#include <atlbase.h>
//You may derive a class from CComModule and use it if you want to override
//something, but do not change the name of _Module
extern CComModule _Module;
#include <atlcom.h>



xxxx.cpp


STDAPI DllUnregisterServer(void)
{
CWinApp a;//成功编译
return _Module.UnregisterServer(TRUE);
}

回复
lhz113 2007-12-24
没有用。加了也还是不行
回复
飞哥 2007-12-24
在创建atl工程时,最开始的support mfc 选项勾上就行了
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告