1 //+---------------------------------------------------------------------------
3 // HELLO_WIN.C - Windows GUI 'Hello World!' Example
5 //+---------------------------------------------------------------------------
9 #define APPNAME "HELLO_WIN"
11 char szAppName
[] = APPNAME
; // The name of this application
12 char szTitle
[] = APPNAME
; // The title bar text
13 const char *pWindowText
;
15 void CenterWindow(HWND hWnd
);
17 //+---------------------------------------------------------------------------
21 // Synopsis: very unusual type of function - gets called by system to
22 // process windows messages.
24 // Arguments: same as always.
25 //----------------------------------------------------------------------------
27 LRESULT CALLBACK
WndProc(HWND hwnd
, UINT message
, WPARAM wParam
, LPARAM lParam
)
31 // ----------------------- first and last
40 // ----------------------- get out of it...
46 if (VK_ESCAPE
== wParam
)
50 // ----------------------- display our minimal info
56 hdc
= BeginPaint(hwnd
, &ps
);
58 GetClientRect(hwnd
, &rc
);
59 SetTextColor(hdc
, RGB(240,240,96));
60 SetBkMode(hdc
, TRANSPARENT
);
61 DrawText(hdc
, pWindowText
, -1, &rc
, DT_CENTER
|DT_SINGLELINE
|DT_VCENTER
);
67 // ----------------------- let windows do all other stuff
69 return DefWindowProc(hwnd
, message
, wParam
, lParam
);
74 //+---------------------------------------------------------------------------
78 // Synopsis: standard entrypoint for GUI Win32 apps
80 //----------------------------------------------------------------------------
83 HINSTANCE hPrevInstance
,
92 pWindowText
= lpCmdLine
[0] ? lpCmdLine
: "Hello Windows!";
94 // Fill in window class structure with parameters that describe
97 ZeroMemory(&wc
, sizeof wc
);
98 wc
.hInstance
= hInstance
;
99 wc
.lpszClassName
= szAppName
;
100 wc
.lpfnWndProc
= (WNDPROC
)WndProc
;
101 wc
.style
= CS_DBLCLKS
|CS_VREDRAW
|CS_HREDRAW
;
102 wc
.hbrBackground
= (HBRUSH
)GetStockObject(BLACK_BRUSH
);
103 wc
.hIcon
= LoadIcon(NULL
, IDI_APPLICATION
);
104 wc
.hCursor
= LoadCursor(NULL
, IDC_ARROW
);
106 if (FALSE
== RegisterClass(&wc
))
109 // create the browser
113 WS_OVERLAPPEDWINDOW
|WS_VISIBLE
,
126 // Main message loop:
127 while (GetMessage(&msg
, NULL
, 0, 0) > 0) {
128 TranslateMessage(&msg
);
129 DispatchMessage(&msg
);
135 //+---------------------------------------------------------------------------
137 //+---------------------------------------------------------------------------
139 void CenterWindow(HWND hwnd_self
)
142 RECT rw_self
, rc_parent
, rw_parent
;
145 hwnd_parent
= GetParent(hwnd_self
);
146 if (NULL
== hwnd_parent
)
147 hwnd_parent
= GetDesktopWindow();
149 GetWindowRect(hwnd_parent
, &rw_parent
);
150 GetClientRect(hwnd_parent
, &rc_parent
);
151 GetWindowRect(hwnd_self
, &rw_self
);
153 xpos
= rw_parent
.left
+ (rc_parent
.right
+ rw_self
.left
- rw_self
.right
) / 2;
154 ypos
= rw_parent
.top
+ (rc_parent
.bottom
+ rw_self
.top
- rw_self
.bottom
) / 2;
159 SWP_NOSIZE
|SWP_NOZORDER
|SWP_NOACTIVATE
163 //+---------------------------------------------------------------------------