关于宏的两个问题(1)如何快速看到宏替换后的代码?(2)参数替换时都替换哪些字符?
he_sl 2005-04-27 02:24:25 比如我有个宏
#define EASYSIZE(id,l,t,r,b,o) \
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
if(bInit) {\
GetDlgItem(id)->GetWindowRect(rect); ScreenToClient(rect);\
if(o & ES_HCENTER) id##_es_l = rect.Width()/2; else {\
if(l==ES_BORDER) id##_es_l = rect.left; else if(l==ES_KEEPSIZE) id##_es_l = rect.Width(); else {\
GetDlgItem(l)->GetWindowRect(rect2); ScreenToClient(rect2);\
id##_es_l = rect.left-rect2.right;}}\
if(o & ES_VCENTER) id##_es_t = rect.Height()/2; else {\
}
那么
EASYSIZE(IDC_TREE_P2DIRS, ES_BORDER, ES_BORDER, ES_BORDER, ES_KEEPSIZE, 0)
结果是什么样子的?尤其是应该将定义中哪些l替换成ES_BORDER?