Sometimes you need a quick and dirty window and you don’t want to go through all the hassle of registering a class for it. For example, you might need a window to do a brief snippet of DDE, or you just need a window to own a message box.
To save yourself the trouble of registering a class for every single weenie thing you might need a window for, you can get lazy and register a single “scratch window” class and simply subclass it on an as-needed basis.
ATOM RegisterScratchWindowClass(void) { WNDCLASS wc = { 0, // style DefWindowProc, // lpfnWndProc 0, // cbClsExtra 0, // cbWndExtra g_hinst, // this file's HINSTANCE NULL, // hIcon LoadCursor(NULL, IDC_ARROW), // hCursor (HBRUSH)(COLOR_BTNFACE+1), // hbrBackground NULL, // lpszMenuName TEXT("Scratch"), // lpszClassName }; return RegisterClass(&wc); } HWND CreateScratchWindow(HWND hwndParent, WNDPROC wp) { HWND hwnd; hwnd = CreateWindow(TEXT("Scratch"), NULL, hwndParent ? WS_CHILD : WS_OVERLAPPED, 0, 0, 0, 0, hwndParent, NULL, NULL, NULL); if (hwnd) { SubclassWindow(hwnd, wp); } return hwnd; }
Now if you need a quick one-off window, you can just create a scratch window instead of creating a custom window class just to handle that specific task.
We’ll see the scratch window in action soon.
0 comments