VC++编程 一小段程序 请求详细解释6

来源:百度知道 编辑:UC知道 时间:2024/07/13 05:20:32
case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;

for (i = 0 ; i < 4 ; i++)
MoveWindow (hwndChild[i], (i % 2) * cxClient / 2,
(i > 1) * cyClient / 2,
cxClient / 2, cyClient / 2, TRUE) ;

特别是下面2句

(i % 2) * cxClient / 2,
(i > 1) * cyClient / 2,

请大家指教一二,感激不尽~~~~

这是对WM_SIZE 消息的响应,
在函数调用
MoveWindow (

//窗口句柄数组,标志不同窗口
hwndChild[i],

//窗口左上角坐标,用取余运算是0号和2号窗口左上横坐标为0(因为(i % 2)==0),1号和3号窗口左上角横坐标为cxClient / 2((i % 2)==1)。
(i % 2) * cxClient / 2,

//窗口右上角坐标,用判断使0号和1号窗口左上角纵坐标为0((i > 1)返回假),2号和3号窗口左上角纵坐标为cyClient / 2((i > 1)成立返回1,这里是一种取巧,但最好不要这么用,应将详细判断写出来)
(i > 1) * cyClient / 2,

//将每个窗口宽和高分别设为cxClient / 2和cyClient / 2,
cxClient / 2,
cyClient / 2,
TRUE
) ;

该函数最终实现
0 1
2 3
四个窗口等分显示