Regenerate Japanese resources
[cygwin-setup.git] / window.h
blobdcc81c1b5c6e92a2fc7f60ab7808784be65f05a6
1 /*
2 * Copyright (c) 2001, 2002, 2003 Gary R. Van Sickle.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * A copy of the GNU General Public License can be found at
10 * http://www.gnu.org/
12 * Written by Gary R. Van Sickle <g.r.vansickle@worldnet.att.net>
16 #ifndef SETUP_WINDOW_H
17 #define SETUP_WINDOW_H
19 // This is the header for the Window class. It serves both as a window class
20 // in its own right and as a base class for other window-like classes (e.g. PropertyPage,
21 // PropSheet).
23 #include <vector>
24 #include <map>
25 #include "win32.h"
26 #include <commctrl.h>
27 #include "LogSingleton.h"
29 class RECTWrapper;
31 class Window
33 static ATOM WindowClassAtom;
34 static HINSTANCE AppInstance;
36 virtual bool registerWindowClass ();
37 protected:
38 static LRESULT CALLBACK FirstWindowProcReflector (HWND hwnd, UINT uMsg,
39 WPARAM wParam,
40 LPARAM lParam);
41 private:
42 static LRESULT CALLBACK WindowProcReflector (HWND hwnd, UINT uMsg,
43 WPARAM wParam, LPARAM lParam);
45 // Our Windows(tm) window handle.
46 HWND WindowHandle;
48 Window *Parent;
50 // contains handles to fonts we've created
51 // that are to be deleted in our dtor
52 std::vector<HFONT> Fonts;
54 // if we have activated tool tips this will contain the handle
55 HWND TooltipHandle;
57 // maps a control ID to a string resource ID
58 std::map<int, int> TooltipStrings;
60 // Recursive count of number of times we've called SetBusy,
61 // so that we only reset the cursor when we've cleared it
62 // the same number of times.
63 int BusyCount;
65 // Saved old cursor handle, only while BusyCount is non-zero.
66 HCURSOR OldCursor;
68 // Handle to busy cursor (loaded first time needed, NULL until then).
69 HCURSOR BusyCursor;
71 protected:
72 void SetHWND (HWND h)
74 WindowHandle = h;
76 void setParent(Window *aParent)
78 Parent = aParent;
81 public:
82 Window ();
83 virtual ~ Window ();
85 bool Create (Window * Parent = NULL,
86 DWORD Style = WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN);
88 static void SetAppInstance (HINSTANCE h)
90 // This only has to be called once in the entire app, before
91 // any Windows are created.
92 AppInstance = h;
95 virtual LRESULT WindowProc (UINT uMsg, WPARAM wParam, LPARAM lParam);
96 virtual bool MessageLoop ();
98 void Show (int State);
100 HWND GetHWND () const
102 // Ideally this could be hidden from the user completely.
103 return WindowHandle;
105 static HINSTANCE GetInstance ()
107 return AppInstance;
110 Window *GetParent () const
112 return Parent;
114 HWND GetDlgItem (int id) const
116 return::GetDlgItem (GetHWND (), id);
118 bool SetDlgItemFont (int id, const TCHAR * fontname, int Pointsize,
119 int Weight = FW_NORMAL, bool Italic =
120 false, bool Underline = false, bool Strikeout = false);
122 UINT IsButtonChecked (int nIDButton) const;
124 void PostMessageNow (UINT uMsg, WPARAM wParam = 0, LPARAM lParam = 0);
126 virtual bool OnMessageApp (UINT uMsg, WPARAM wParam, LPARAM lParam)
128 // Not processed by default. Override in derived classes to
129 // do something with app messages if you need to.
130 return false;
133 virtual bool OnMessageCmd (int id, HWND hwndctl, UINT code)
135 // Not processed by default. Override in derived classes to
136 // do something with command messages if you need to.
137 return false;
140 virtual bool OnNotify (NMHDR *pNmHdr, LRESULT *pResult)
142 // Not processed by default. Override in derived classes to
143 // do something with command messages if you need to.
144 return false;
147 RECT GetWindowRect() const;
148 RECT GetClientRect() const;
150 // Center the window on the parent, or on screen if no parent.
151 void CenterWindow ();
153 // Reposition the window
154 bool MoveWindow(long x, long y, long w, long h, bool Repaint = true);
155 bool MoveWindow(const RECTWrapper &r, bool Repaint = true);
157 // Set the title of the window.
158 void SetWindowText (const std::wstring& s);
160 RECT ScreenToClient(const RECT &r) const;
161 void ActivateTooltips ();
162 void SetTooltipState (bool b);
163 void AddTooltip (HWND target, HWND win, const char *text);
164 void AddTooltip (int id, const char *text);
165 void AddTooltip (int id, int string_resource);
166 BOOL TooltipNotificationHandler (LPARAM lParam);
167 // Call this to set an hourglass cursor.
168 void SetBusy (void);
169 // Call this to reset to normal cursor. It must be called
170 // once for each call to SetBusy; they nest recursively.
171 void ClearBusy (void);
174 #endif /* SETUP_WINDOW_H */