Andrew Nguyen : regedit: Refactor window class initialization to a separate function.

Alexandre Julliard julliard at winehq.org
Mon Apr 18 11:10:52 CDT 2011


Module: wine
Branch: master
Commit: 7369b6cf4174469a43ee2828d8482c8511817836
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7369b6cf4174469a43ee2828d8482c8511817836

Author: Andrew Nguyen <anguyen at codeweavers.com>
Date:   Sat Apr 16 03:05:55 2011 -0500

regedit: Refactor window class initialization to a separate function.

---

 programs/regedit/main.c |   71 +++++++++++++++++++++++------------------------
 1 files changed, 35 insertions(+), 36 deletions(-)

diff --git a/programs/regedit/main.c b/programs/regedit/main.c
index 27bc26f..f10741b 100644
--- a/programs/regedit/main.c
+++ b/programs/regedit/main.c
@@ -63,7 +63,37 @@ TCHAR szTitle[MAX_LOADSTRING];
 const TCHAR szFrameClass[] = {'R','E','G','E','D','I','T','_','F','R','A','M','E',0};
 const TCHAR szChildClass[] = {'R','E','G','E','D','I','T',0};
 
+static BOOL RegisterWindowClasses(HINSTANCE hInstance, ATOM *hFrameWndClass, ATOM *hChildWndClass)
+{
+    WNDCLASSEX wndclass = {0};
+
+    /* Frame class */
+    wndclass.cbSize = sizeof(WNDCLASSEX);
+    wndclass.style = CS_HREDRAW | CS_VREDRAW;
+    wndclass.lpfnWndProc = FrameWndProc;
+    wndclass.hInstance = hInstance;
+    wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_REGEDIT));
+    wndclass.hCursor = LoadCursor(0, IDC_ARROW);
+    wndclass.lpszClassName = szFrameClass;
+    wndclass.hIconSm = LoadImage(hInstance, MAKEINTRESOURCE(IDI_REGEDIT), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON),
+                                 GetSystemMetrics(SM_CYSMICON), LR_SHARED);
+
+    if (!(*hFrameWndClass = RegisterClassEx(&wndclass)))
+        return FALSE;
+
+    /* Child class */
+    wndclass.lpfnWndProc = ChildWndProc;
+    wndclass.cbWndExtra = sizeof(HANDLE);
+    wndclass.lpszClassName = szChildClass;
+
+    if (!(*hChildWndClass = RegisterClassEx(&wndclass)))
+    {
+        UnregisterClass(szFrameClass, hInstance);
+        return FALSE;
+    }
 
+    return TRUE;
+}
 /*******************************************************************************
  *
  *
@@ -80,41 +110,10 @@ const TCHAR szChildClass[] = {'R','E','G','E','D','I','T',0};
 static BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
 {
     WCHAR empty = 0;
-    WNDCLASSEX wcFrame = {
-                             sizeof(WNDCLASSEX),
-                             CS_HREDRAW | CS_VREDRAW/*style*/,
-                             FrameWndProc,
-                             0/*cbClsExtra*/,
-                             0/*cbWndExtra*/,
-                             hInstance,
-                             LoadIcon(hInstance, MAKEINTRESOURCE(IDI_REGEDIT)),
-                             LoadCursor(0, IDC_ARROW),
-                             0/*hbrBackground*/,
-                             0/*lpszMenuName*/,
-                             szFrameClass,
-                             LoadImage(hInstance, MAKEINTRESOURCE(IDI_REGEDIT), IMAGE_ICON,
-                                              GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED)
-                         };
-    ATOM hFrameWndClass = RegisterClassEx(&wcFrame); /* register frame window class */
-
-    WNDCLASSEX wcChild = {
-                             sizeof(WNDCLASSEX),
-                             CS_HREDRAW | CS_VREDRAW/*style*/,
-                             ChildWndProc,
-                             0/*cbClsExtra*/,
-                             sizeof(HANDLE)/*cbWndExtra*/,
-                             hInstance,
-                             LoadIcon(hInstance, MAKEINTRESOURCE(IDI_REGEDIT)),
-                             LoadCursor(0, IDC_ARROW),
-                             0/*hbrBackground*/,
-                             0/*lpszMenuName*/,
-                             szChildClass,
-                             LoadImage(hInstance, MAKEINTRESOURCE(IDI_REGEDIT), IMAGE_ICON,
-                                              GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED)
-
-                         };
-    ATOM hChildWndClass = RegisterClassEx(&wcChild); /* register child windows class */
-    hChildWndClass = hChildWndClass; /* warning eater */
+    ATOM hFrameWndClass, hChildWndClass;
+
+    if (!RegisterWindowClasses(hInstance, &hFrameWndClass, &hChildWndClass))
+        return FALSE;
 
     hMenuFrame = LoadMenuW(hInstance, MAKEINTRESOURCEW(IDR_REGEDIT_MENU));
     hPopupMenus = LoadMenuW(hInstance, MAKEINTRESOURCEW(IDR_POPUP_MENUS));




More information about the wine-cvs mailing list