以下示例创建一个具有尺寸握把的状态窗口,并根据父窗口的客户区域的宽度将窗口划分为四个相等的部分。
// DoCreateStatusWindow - 创建状态窗口并将其分成
//指定数量的零件。
//返回状态窗口的句柄。
// hwndParent - 状态窗口的父窗口
// nStatusID - 子窗口标识符
// hinst - 处理应用程序实例
// nParts - 分割状态窗口的零件数
HWND DoCreateStatusWindow(HWND hwndParent,int nStatusID,
HINSTANCE hinst,int nParts)
{
HWND hwndStatus;
RECT rcClient;
HLOCAL hloc;
LPINT lpParts;
int i, nWidth;
//确保加载公共控制DLL。
InitCommonControls();
//创建状态窗口。
hwndStatus = CreateWindowEx(
0, //没有扩展样式
STATUSCLASSNAME, //状态窗口类的名称
(LPCTSTR) NULL, //第一次创建时没有文本
SBARS_SIZEGRIP | //包括尺寸握把
WS_CHILD, //创建子窗口
0, 0, 0, 0, //忽略大小和位置
hwndParent, //处理父窗口
(HMENU) nStatusID, //子窗口标识符en
hinst, //处理应用程序实例
NULL); //没有窗口创建数据
//获取父窗口的客户区域的坐标。
GetClientRect(hwndParent, &rcClient);
//分配一个数组来保存右边缘坐标。
hloc = LocalAlloc(LHND, sizeof(int) * nParts);
lpParts = LocalLock(hloc);
//计算每个零件的右边缘坐标,和
//将坐标复制到数组。
nWidth = rcClient.right / nParts;
for (i = 0; i < nParts; i++) {
lpParts[i] = nWidth;
nWidth += nWidth;
}
//告诉状态窗口来创建窗口部件。
SendMessage(hwndStatus,SB_SETPARTS,(WPARAM)nParts,
(LPARAM) lpParts);
//释放数组,然后返回。
LocalUnlock(hloc);
LocalFree(hloc);
return hwndStatus;
}