4 void Write (HDC dc, int x, int y, char *s)
6 SetBkMode(dc, TRANSPARENT);
7 TextOut (dc, x, y, s, strlen (s));
10 LRESULT WndProc (HWND wnd, UINT msg, WPARAM w, LPARAM l)
12 static short xChar, yChar;
14 static char* strHola = "Hola";
22 GetTextMetrics (dc, &tm);
23 xChar = tm.tmAveCharWidth;
25 GetTextExtentPoint32( dc, strHola, strlen(strHola), ((LPSIZE)&rectHola) + 1 );
26 OffsetRect( &rectHola, xChar, yChar );
32 InvalidateRect(wnd, &rectHola, TRUE );
33 ScrollChildren32(wnd, msg, w, l);
37 dc = BeginPaint (wnd, &ps);
38 Write (dc, xChar, yChar, strHola);
47 return DefWindowProc (wnd, msg, w, l);
52 LRESULT WndProc2 (HWND wnd, UINT msg, WPARAM w, LPARAM l)
54 static short xChar, yChar;
64 GetTextMetrics (dc, &tm);
65 xChar = tm.tmAveCharWidth;
71 dc = BeginPaint (wnd, &ps);
72 sprintf(buf,"ps.rcPaint = {left = %d, top = %d, right = %d, bottom = %d}",
73 ps.rcPaint.left,ps.rcPaint.top,ps.rcPaint.right,ps.rcPaint.bottom);
74 rectInfo.left = rectInfo.top = 0;
75 GetTextExtentPoint32 (dc, buf, strlen(buf), ((LPSIZE)&rectInfo) + 1 );
76 OffsetRect (&rectInfo, xChar, yChar );
77 Write (dc, xChar, yChar, buf);
83 InvalidateRect( wnd, &rectInfo, TRUE );
84 CalcChildScroll( (UINT16)GetParent(wnd), SB_BOTH );
92 return DefWindowProc (wnd, msg, w, l);
97 int PASCAL WinMain (HANDLE inst, HANDLE prev, LPSTR cmdline, int show)
102 char className[] = "class"; /* To make sure className >= 0x10000 */
103 char class2Name[] = "class2";
104 char winName[] = "Test app";
107 class.style = CS_HREDRAW | CS_VREDRAW;
108 class.lpfnWndProc = WndProc;
109 class.cbClsExtra = 0;
110 class.cbWndExtra = 0;
111 class.hInstance = inst;
112 class.hIcon = LoadIcon (0, IDI_APPLICATION);
113 class.hCursor = LoadCursor (0, IDC_ARROW);
114 class.hbrBackground = GetStockObject (WHITE_BRUSH);
115 class.lpszMenuName = NULL;
116 class.lpszClassName = (SEGPTR)className;
117 if (!RegisterClass (&class))
121 wnd = CreateWindow (className, winName, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL,
122 CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0,
126 class.lpfnWndProc = WndProc2;
127 class.lpszClassName = class2Name;
128 class.hbrBackground = GetStockObject(GRAY_BRUSH);
129 if (!RegisterClass (&class))
133 wnd2= CreateWindow (class2Name,"Child window", WS_CAPTION | WS_CHILD | WS_THICKFRAME,
134 50, 50, 350, 100, wnd, 0, inst, 0);
136 ShowWindow (wnd, show);
138 ShowWindow (wnd2, show);
141 while (GetMessage (&msg, 0, 0, 0)){
142 TranslateMessage (&msg);
143 DispatchMessage (&msg);