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;
这样又是可以的。。

我非常奇怪了。。调试的时候形参明明传进来了。值也是一样的。。。。

求高手指点。
展开
 我来答
khlerc
2012-11-21 · TA获得超过420个赞
知道小有建树答主
回答量:485
采纳率:0%
帮助的人:303万
展开全部
VC6吗?Rebuild或者关闭VC6重新打开项目,然后Rebuild一下看看。
VC6经常出现这种现象,因为缓存的问题,导致调试时提示不正确,实际上程序是对的。

如果是VC6,还有个办法,关闭工程,删除*.ncb文件,重启项目,重新编译,基本就OK。
追问
是vs2010,关闭后再打开还是一样。非常奇怪的问题。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
何处淬吴钩
2012-11-21 · TA获得超过5045个赞
知道大有可为答主
回答量:2947
采纳率:50%
帮助的人:2623万
展开全部
把你描述的情况多实验几次,结果确定的话就一定是参数传递错了,而真如你所说的话,就只能是闹鬼了。可以用TRACE()调试输出一下lgSize的值。如果无MFC支持用OutputDebugString输出一下以确认。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式