Hi David, This helps a lot. I was not shure that the WndProcDefault is always called. Udo
Hi David, This position should work too. I added the fix in StaticWindowProc because it is the last pace in the WinProc handler chain. For subclassed controls (Listiew, Treeview?) it is maybe necessary to call the FinalWindowProc before Cleanup, but i am not shure. Thank you for the bugfix. Best regards, Udo
Hi David, When creating a window the hwnd is added to the CWnd map in CWnd::StaticWindowProc when the first window message is received. The linking between the CWnd and the handle is removed when WM_CLOSE is received (OnClose() => Destroy() => ::DestroyWindow() => WM_DESTROY => WM_NCDESTROY) Sometimes child windows get implicitly destroyed when the parent is destroyed. I added a patch to catch this case: // All CWnd windows direct their messages here. This function redirects the // message to the...
Hi David, I noticed that if i start a second instance of Notepad.exe, the 2nd instance overlaps the first instance perfectly. This could cause some confusion. I think it is better to start the second (and third) program instance with CW_USEDEFAULT and let the Window Manager decide where to place the windows... or each instance could add an offset to the window position registry key after it has created its main window... Maybe you could consider this feature in a future release. Regards, Udo
Hi David, I noticed that if i start a second instance of Notepad.exe, the 2nd instance overlaps the first instance perfectly. This could cause some confusion. I think it is better to start the second (and third) program instance with CW_USEDEFAULT and let the Window Manager decide where to place the windows... maybe you could consider this change in a future release. But maybe this feature is too complicated to implement only for window placement? Regards, Udo
Hi David, Thanks for your explanation! The threading stuff is for me difficult to understand. I now have a better understanding how it works and hopefully i will not forget it until i need it again :-). Regards, Udo
Hi David, Thank you for the latest updates. I noticed that you replaced CreateThread in wxx_thread.h with _beginthreadex. The CThreadT destructor still calls CloseHandle in line 168 instead of _endthreadex. At line 186 there is a second CloseHandle which should be changed too. Regards, Udo
Hi David, Great job, David :-) The casts are correct, but they could hide problems by suppressing justified warnings and the code is not as elegant as it was before, regarding readability. Better use /W3 or /W4. /Wall is not usable as it warns about any well defined integer conversion with unequal operands. Udo