下面是我写的一个移动软键盘的程序:
void Move(int top,int bottom)
{
SIPINFO SipInfo;
memset(&SipInfo,0,sizeof(SipInfo));
SipInfo.cbSize=sizeof(SIPINFO);
BOOL bRes = SipGetInfo(&SipInfo);
if (bRes)
{
CRect rc(SipInfo.rcSipRect);
rc.top=top;
rc.bottom=bottom;
//rc.OffsetRect(0,+60);
SipSetDefaultRect(&rc);
CLSID clsid;
if (SipGetCurrentIM(&clsid))
{
SipSetCurrentIM(&clsid);
}
SipShowIM(SIPF_ON);
}
}
为什么在VS2005里面能编译生产成功 却不能执行
执行的时候报错误 4 error LNK2019: 无法解析的外部符号 "public: __cdecl CRect::CRect(struct tagRECT const &)" (??0CRect@@[email protected]@@@Z),该符号在函数 "void __cdecl Move(int,int)" (?Move@@[email protected]) 中被引用 system.obj
把CRect 换成RECT 程序能跑起来 但是函数就实现不了了 求高手指点我错在哪里了
------解决方案--------------------
这样试下?
CRect rc;
rc.top=top;
rc.bottom=bottom;
rc.left = SipInfo.rcSipRect.left;
rc.right = SipInfo.rcSipRect.right;
不知道有没用。。。
------解决方案--------------------
BOOL SipSetDefaultRect(
RECT* pRect
);
这个函数的参数是RECT的,而你传一个CRect给他,可能是这个导致的。
------解决方案--------------------
函数为何不能实现了? 还有别的地方要用到CRect的吗?
------解决方案--------------------
你再试下下面的两种方法哦:
1. 包含头文件 #include <atltypes.h>
2. 打开Project -> Properties -> Configuration Properties -> General,在右边的Project Defaults中,Use of MFC 选为 Use MFC in a Static Library