-
#include <windows.h>
#include <winreg.h>
#include <tchar.h>
#include <stdio.h>
+#include <stdlib.h>
#include "putty.h"
+#include "winstuff.h"
-ATOM tip_class = 0;
+static ATOM tip_class = 0;
-HFONT tip_font;
-COLORREF tip_bg;
-COLORREF tip_text;
+static HFONT tip_font;
+static COLORREF tip_bg;
+static COLORREF tip_text;
-LRESULT CALLBACK SizeTipWndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
+static LRESULT CALLBACK SizeTipWndProc(HWND hWnd, UINT nMsg,
+ WPARAM wParam, LPARAM lParam)
{
switch (nMsg) {
- case WM_ERASEBKGND:
+ case WM_ERASEBKGND:
return TRUE;
- case WM_PAINT:
+ case WM_PAINT:
{
HBRUSH hbr;
HGDIOBJ holdbr;
Rectangle(hdc, cr.left, cr.top, cr.right, cr.bottom);
wtlen = GetWindowTextLength(hWnd);
- wt = (LPTSTR)malloc((wtlen+1)*sizeof(TCHAR));
+ wt = (LPTSTR)smalloc((wtlen+1)*sizeof(TCHAR));
GetWindowText(hWnd, wt, wtlen+1);
SetTextColor(hdc, tip_text);
TextOut(hdc, cr.left+3, cr.top+3, wt, wtlen);
- free(wt);
+ sfree(wt);
SelectObject(hdc, holdbr);
DeleteObject(hbr);
}
return 0;
- case WM_NCHITTEST:
+ case WM_NCHITTEST:
return HTTRANSPARENT;
- case WM_DESTROY:
+ case WM_DESTROY:
DeleteObject(tip_font);
tip_font = NULL;
break;
- case WM_SETTEXT:
+ case WM_SETTEXT:
{
LPCTSTR str = (LPCTSTR)lParam;
SIZE sz;
return DefWindowProc(hWnd, nMsg, wParam, lParam);
}
-HWND tip_wnd = NULL;
-int tip_enabled = 0;
+static HWND tip_wnd = NULL;
+static int tip_enabled = 0;
void UpdateSizeTip(HWND src, int cx, int cy)
{
- TCHAR str[16];
+ TCHAR str[32];
if (!tip_enabled) return;
if (!tip_wnd) {
NONCLIENTMETRICS nci;
- // First make sure the window class is registered
+ /* First make sure the window class is registered */
if (!tip_class) {
WNDCLASS wc;
wc.lpfnWndProc = SizeTipWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
- wc.hInstance = putty_inst;
+ wc.hInstance = hinst;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = NULL;
tip_class = RegisterClass(&wc);
}
-// // Default values based on Windows Standard color scheme
-//
-// tip_font = GetStockObject(SYSTEM_FONT);
-// tip_bg = RGB(255, 255, 225);
-// tip_text = RGB(0, 0, 0);
+#if 0
+ /* Default values based on Windows Standard color scheme */
+
+ tip_font = GetStockObject(SYSTEM_FONT);
+ tip_bg = RGB(255, 255, 225);
+ tip_text = RGB(0, 0, 0);
+#endif
- // Prepare other GDI objects and drawing info
+ /* Prepare other GDI objects and drawing info */
tip_bg = GetSysColor(COLOR_INFOBK);
tip_text = GetSysColor(COLOR_INFOTEXT);
-
+
memset(&nci, 0, sizeof(NONCLIENTMETRICS));
nci.cbSize = sizeof(NONCLIENTMETRICS);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &nci, 0);
tip_font = CreateFontIndirect(&nci.lfStatusFont);
}
- // Generate the tip text
-
- _sntprintf(str, 16, "%dx%d", cx, cy);
+ /* Generate the tip text */
+ sprintf(str, "%dx%d", cx, cy);
if (!tip_wnd) {
HDC hdc;
RECT wr;
int ix, iy;
- // calculate the tip's size
+ /* calculate the tip's size */
hdc = CreateCompatibleDC(NULL);
GetTextExtentPoint32(hdc, str, _tcslen(str), &sz);
iy = wr.top - sz.cy;
if (iy<16) iy = 16;
- // Create the tip window
+ /* Create the tip window */
tip_wnd = CreateWindowEx(WS_EX_TOOLWINDOW|WS_EX_TOPMOST, MAKEINTRESOURCE(tip_class), str, WS_POPUP,
- ix, iy, sz.cx, sz.cy,
- NULL, NULL, putty_inst, NULL);
+ ix, iy, sz.cx, sz.cy,
+ NULL, NULL, hinst, NULL);
ShowWindow(tip_wnd, SW_SHOWNOACTIVATE);
} else {
- // Tip already exists, just set the text
+ /* Tip already exists, just set the text */
SetWindowText(tip_wnd, str);
}
DestroyWindow(tip_wnd);
tip_wnd = NULL;
}
-
+
tip_enabled = bEnable;
}