用全局变量可以满足要求,除此之外呢?
我试着声明为类的成员变量,根本不行,由于采用的是多继承。
不知道大家有什么别的办法?
我试着声明为类的成员变量,根本不行,由于采用的是多继承。
不知道大家有什么别的办法?
解决方案 »
- 如何重载或虚拟CFileDialog的OnOK按钮,我想在用户按了保存按钮后,再消失文件保存对话框,怎么实现?谢谢
- VC操作WORD时如何获得每页行数?
- 建立MDI程序后,如何在程序开始运行时,不打开文档,等需要的时候再打开?
- 极限编程 XP 是哪两个单词的缩写?
- 有关用InstallShield打包的问题,请各位大虾帮忙。100分奉献!!!
- vc中如何调用操作系统删除指定文件?
- Crystal report 的高难度打印要求,高手请进,时间很急!
- 谁知道什么地方有javescript的运行器啊?IHTMLScriptElement只能解释不能运行。
- 请问VB开发的Activex控件是否能被其他程序调用,在html中如何使用,怎样得到它的GUID??
- 根据对方的主机名得到IP地址?
- 我在vc.net中写了一个程序,但是在别人的机器中不能运行。
- 怪,内存泄露在什么地方?
ATL中,还不是类吗
接口实现了三个方法:ConnectServer、SendMsg、DisConnect分别是连接,发送,断开。
调试发现:创建conSock时值为680,在SendMsg中使用时变为3452816845,在DisConnect中也是3452816845,在服务程序端能感知客户的连接和断开,就是无法接到数据,如果用全局变量代替成员变量就一切正常,不知道为什么?
struct ATL_NO_VTABLE IMyTestImpl : public IMyTest
{
STDMETHOD(SetVal)(long lVal)
{
_T * pThis = static_cast<_T*>(this);
pThis->m_lVal = lVal;
return S_OK;
}
STDMETHOD(GetVal)(long* lval)
{
if( !lval ) return E_POINTER;
_T * pThis = static_cast<_T*>(this);
*lval = pThis-> m_lVal;
return S_OK;
}
};class ATL_NO_VTABLE CXXXXOBJ :
public CComObjectRootEx<XXXXXX>,
public CComCoClass<CXXXXX, &CLSID_XXXXXX>,
public ......,
public IMyTestImpl<CXXXXXOBJ>
{
public:
long m_lVal;
public:
.........
}
{
// TODO: Add your implementation code here
WSADATA ws;
::WSAStartup(MAKEWORD(2,0),&ws);
conSock = socket(AF_INET,SOCK_STREAM,0);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
USES_CONVERSION;
addr.sin_addr.s_addr = inet_addr(OLE2A(str));
int ref = connect(conSock,(sockaddr*)&addr,sizeof(addr));
if(ref == 0)
MessageBox(NULL,"连接成功","提示",MB_OK);
m_a = 88;
return S_OK;
}STDMETHODIMP CFirst_ATL::SendMsg(BSTR msg)
{
char* sz = _com_util::ConvertBSTRToString(msg);
int a=strlen(sz);
int ref = send(conSock,sz,strlen(sz),0);
itoa(m_a,sz,10);
MessageBox(NULL,sz,"成员变量的值",MB_OK);
return S_OK;
}
只要一执行后一个函数,m_a就突然变为-865625864。
不知道为什么?