以下示例创建一个工具提示控件,并为其添加了几个工具。该示例在窗口的客户端区域中创建一个矩形网格,然后使用TTM_ADDTOOL消息将每个矩形添加到工具提示控件。请注意,工具提示控件的所有者的窗口过程必须处理鼠标消息,并使用TTM_RELAYEVENT消息将其传递给工具提示控件。
// DoCreateTooltip - 创建一个工具提示控件并添加一些工具
//到它
//返回工具提示控件的句柄成功或NULL
// 除此以外。
// hwndOwner - 所有者窗口的句柄
//
//全局变量
// g_hinst - 应用程序实例的句柄
extern HINSTANCE g_hinst;
HWND DoCreateTooltip(HWND hwndOwner)
{
HWND hwndTT; //处理工具提示
int row, col; //行和列
TOOLINFO ti; //工具信息
int id = 0; //偏移到字符串标识符
static char *szTips[NUM_TIPS] = //提示文字
{
“剪切”,“复制”,“粘贴”,“撤消”,“打开”,“保存”
};
//确保加载公共控件DLL并创建
//一个工具提示控件。
InitCommonControls();
hwndTT = CreateWindow(TOOLTIPS_CLASS, (LPSTR) NULL, TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, (HMENU) NULL, g_hinst, NULL);
if (hwndTT == (HWND) NULL)
return (HWND) NULL;
//将客户区划分成矩形网格,然后添加每个
//矩形到工具提示。
for (row = 0; row < MAX_ROWS ; row++ )
for (col = 0; col < MAX_COLS; col++) {
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = 0;
ti.hwnd = hwndOwner;
ti.hinst = g_hinst;
ti.uId = (UINT) id;
ti.lpszText = (LPSTR) szTips[id++];
ti.rect.left = col * CX_COLUMN;
ti.rect.top = row * CY_ROW;
ti.rect.right = ti.rect.left + CX_COLUMN;
ti.rect.bottom = ti.rect.top + CY_ROW;
if(!SendMessage(hwndTT,TTM_ADDTOOL,0,
(LPARAM)(LPTOOLINFO)& ti))
return NULL;
}
return hwndTT;
}