创建工具提示控制

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

以下示例创建一个工具提示控件,并为其添加了几个工具。该示例在窗口的客户端区域中创建一个矩形网格,然后使用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;

}