int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
WNDCLASSEX wc;
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&icex);
g_hinst = hInstance;
memset(&wc, 0, sizeof(WNDCLASSEX));
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = DefWindowProc;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SOME_ICON));
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
wc.lpszClassName = g_szClassName;
if (!RegisterClassEx(&wc)) return 0;
MainWindow = CreateWindowEx(0, g_szClassName, "Caption", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 320, 240, NULL, NULL, hInstance, NULL);
if (!MainWindow) return 0;
hButton = CreateWindowEx(0, "BUTTON","PressMe", WS_CHILD, 10,10,80,25, MainWindow, NULL, g_hinst, 0);
if (!hButton) return 0;
ShowWindow(hButton, SW_SHOWNORMAL), UpdateWindow(hButton);
ShowWindow(MainWindow, SW_SHOWNORMAL), UpdateWindow(MainWindow);
hwndTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
MainWindow, NULL, GetModuleHandle(NULL),
NULL);
TOOLINFOA ti;
memset(&ti,0,sizeof(TOOLINFOA));
ti.cbSize=sizeof(TOOLINFOA);
ti.uFlags=TTF_SUBCLASS;
ti.hwnd=hButton;
GetClientRect(hButton,&ti.rect);
ti.lpszText="1111";
SendMessage(hwndTip, TTM_ADDTOOLA,0,(LPARAM)&ti);
SendMessage(hwndTip, TTM_ACTIVATE, 1, 0);
while (GetMessage(&msg, MainWindow, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
Если использовать DialogBoxParam для создания приложения, то hint высвечивается, а если идти через CreateWindow то нивкакую, хотя код создающий подсказку для кнопки идентичен в обоих случаях