使用状态窗口

【勇芳软件工作室】汉化HomePreviousNext

以下示例创建一个具有尺寸握把的状态窗口,并根据父窗口的客户区域的宽度将窗口划分为四个相等的部分。

// 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;

}