如何创建标头控件
本主题演示如何创建标头控件并将其定位在父窗口的工作区中。 可以使用 CreateWindowEx 函数并指定 WC_HEADER 窗口类和适当的标头控件样式来创建标头控件。 加载公共控件 DLL 时,会注册此窗口类。 要确保此 DLL 已加载,请使用 InitCommonControlsEx 函数。
需要了解的事项
技术
先决条件
- C/C++
- Windows 用户界面编程
说明
以下 C++ 代码示例首先调用 InitCommonControlsEx 函数来加载公共控件 DLL。 然后调用 CreateWindowEx 函数来创建标头控件。 该控件最初隐藏。 HDM_LAYOUT 消息用于计算控件在父窗口中的大小和位置。 然后重新定位控件并使其可见。
// DoCreateHeader - creates a header control that is positioned along
// the top of the parent window's client area.
// Returns the handle to the header control.
// hwndParent - handle to the parent window.
//
// Global variable
// g_hinst - handle to the application instance
extern HINSTANCE g_hinst;
//
// child-window identifier
int ID_HEADER;
//
HWND DoCreateHeader(HWND hwndParent)
{
HWND hwndHeader;
RECT rcParent;
HDLAYOUT hdl;
WINDOWPOS wp;
// Ensure that the common control DLL is loaded, and then create
// the header control.
INITCOMMONCONTROLSEX icex; //declare an INITCOMMONCONTROLSEX Structure
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_LISTVIEW_CLASSES; //set dwICC member to ICC_LISTVIEW_CLASSES
// this loads list-view and header control classes.
InitCommonControlsEx(&icex);
if ((hwndHeader = CreateWindowEx(0, WC_HEADER, (LPCTSTR) NULL,
WS_CHILD | WS_BORDER | HDS_BUTTONS | HDS_HORZ,
0, 0, 0, 0, hwndParent, (HMENU) ID_HEADER, g_hinst,
(LPVOID) NULL)) == NULL)
return (HWND) NULL;
// Retrieve the bounding rectangle of the parent window's
// client area, and then request size and position values
// from the header control.
GetClientRect(hwndParent, &rcParent);
hdl.prc = &rcParent;
hdl.pwpos = ℘
if (!SendMessage(hwndHeader, HDM_LAYOUT, 0, (LPARAM) &hdl))
return (HWND) NULL;
// Set the size, position, and visibility of the header control.
SetWindowPos(hwndHeader, wp.hwndInsertAfter, wp.x, wp.y,
wp.cx, wp.cy, wp.flags | SWP_SHOWWINDOW);
return hwndHeader;
}
相关主题