/// <summary> /// Retrieves a WindowClass object for use. This will create a new /// object if there is no such class/style available, or retrun a /// cached object if one exists. /// </summary> internal static WindowClass Create(string className, NativeMethods.ClassStyle classStyle) { lock (s_wcInternalSyncObject) { WindowClass wc = s_cache; if (className == null) { // If we weren't given a class name, look for a window // that has the exact class style. while (wc != null && (wc._className != null || wc._classStyle != classStyle)) { wc = wc._next; } } else { while (wc != null && !className.Equals(wc._className)) { wc = wc._next; } } if (wc == null) { // Didn't find an existing class, create one and attatch it to // the end of the linked list. wc = new WindowClass(className, classStyle) { _next = s_cache }; s_cache = wc; } return(wc); } }
internal WindowClass(string className, NativeMethods.ClassStyle classStyle) { _className = className; _classStyle = classStyle; RegisterClass(); }