
C语言函数形参的一个怪问题
void_SetCharFormat(HWNDhWnd,COLORREFcrBK,COLORREFcrText,TCHAR*lpFont,longlgSize){CHAR...
void _SetCharFormat(HWND hWnd,COLORREF crBK,COLORREF crText,TCHAR *lpFont,long lgSize)
{
CHARFORMAT2 stCF;
RtlZeroMemory(&stCF,sizeof(CHARFORMAT2));
stCF.cbSize = sizeof(CHARFORMAT2);
stCF.crBackColor = crBK;
stCF.crTextColor = crText;
lstrcpy(stCF.szFaceName,lpFont);
stCF.dwMask = CFM_BACKCOLOR | CFM_FACE | CFM_COLOR | CFM_SIZE;
stCF.yHeight = lgSize;
SendMessage(hWnd,EM_SETCHARFORMAT,0,(LPARAM)&stCF);
}
stCF.yHeight = lgSize; 这样写的话就没有效果
但是我改成
stCF.yHeight = 300; 这样就能得到正确效果
下面是我对函数的调用。
_SetCharFormat(hEdit,RGB(189,242,222),0,TEXT("Courier New"),300);
这样没效果。
而我在函数体内这样写
lgSize = 300;
stCF.yHeight = lgSize;
这样又是可以的。。
我非常奇怪了。。调试的时候形参明明传进来了。值也是一样的。。。。
求高手指点。 展开
{
CHARFORMAT2 stCF;
RtlZeroMemory(&stCF,sizeof(CHARFORMAT2));
stCF.cbSize = sizeof(CHARFORMAT2);
stCF.crBackColor = crBK;
stCF.crTextColor = crText;
lstrcpy(stCF.szFaceName,lpFont);
stCF.dwMask = CFM_BACKCOLOR | CFM_FACE | CFM_COLOR | CFM_SIZE;
stCF.yHeight = lgSize;
SendMessage(hWnd,EM_SETCHARFORMAT,0,(LPARAM)&stCF);
}
stCF.yHeight = lgSize; 这样写的话就没有效果
但是我改成
stCF.yHeight = 300; 这样就能得到正确效果
下面是我对函数的调用。
_SetCharFormat(hEdit,RGB(189,242,222),0,TEXT("Courier New"),300);
这样没效果。
而我在函数体内这样写
lgSize = 300;
stCF.yHeight = lgSize;
这样又是可以的。。
我非常奇怪了。。调试的时候形参明明传进来了。值也是一样的。。。。
求高手指点。 展开
2个回答
展开全部
VC6吗?Rebuild或者关闭VC6重新打开项目,然后Rebuild一下看看。
VC6经常出现这种现象,因为缓存的问题,导致调试时提示不正确,实际上程序是对的。
如果是VC6,还有个办法,关闭工程,删除*.ncb文件,重启项目,重新编译,基本就OK。
VC6经常出现这种现象,因为缓存的问题,导致调试时提示不正确,实际上程序是对的。
如果是VC6,还有个办法,关闭工程,删除*.ncb文件,重启项目,重新编译,基本就OK。
追问
是vs2010,关闭后再打开还是一样。非常奇怪的问题。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询