HTML-Help window is not closing |
Post Reply |
Author | |
Dieter
Groupie Joined: 22 July 2006 Status: Offline Points: 15 |
Post Options
Thanks(0)
Posted: 11 November 2009 at 1:49pm |
I've several applications which use the Skin Framework and HTML-Help (CHM-File).
The applications are built with Visual C++ 6 because they have to run on older Windows operating systems (Windows 98, NT4). With Codejock 13.0 the CHM help window has been opened and closed with skinning without any problems: Also the help window closed automatically when my applications have been closed. Now with the Codejock versions 13.1.0 and 13.2.1 the CHM help window is opened correctly, but when the application is closed, the help window isn't automatically closed: The help window remains about 10 seconds skinned and after 10 seconds the skinning of the help window disappears but the help window remains open. Can you tell me what has been changed between Codejock 13.0 and 13.1/13.2.1 and could be now the cause for the CHM-help window problem? |
|
Dieter
Product: Xtreme ToolkitPro version 15.2.1 Platform: Windows XP (32bit) - SP 3 Language: Visual C++ 6.0, Visual Studio 2010 |
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
Hi,
Show code you use to show HTML help from VC6 project.
|
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
Dieter
Groupie Joined: 22 July 2006 Status: Offline Points: 15 |
Post Options
Thanks(0)
|
Hi Oleg,
First, I'm checking with the following code if HTML help is available: CheckHtmlHelp() { BOOL bSucceeded = FALSE; HINSTANCE hHTMLHelpInstance; typedef HWND (WINAPI *FPHH) (HWND, LPCSTR, UINT, DWORD); FPHH htmlHelp; // Load hhctrl.ocx. hHTMLHelpInstance = LoadLibrary (TEXT("hhctrl.ocx")); if (hHTMLHelpInstance != NULL) { #ifdef UNICODE const TCHAR *pszHtmlHelp = "HtmlHelpW"; #else const TCHAR *pszHtmlHelp = "HtmlHelpA"; #endif (FARPROC&) htmlHelp = GetProcAddress(hHTMLHelpInstance, pszHtmlHelp); if (htmlHelp == NULL) { TRACE ("WARNING : hhctrl.ocx loaded but GetProcAddress failed"); bSucceeded = FALSE; } else { bSucceeded = TRUE; } FreeLibrary (hHTMLHelpInstance); } return bSucceeded; } Finally, I'm opening the HTML file with the following code: HtmlHelp(::GetDesktopWindow(), AfxGetApp()->m_pszHelpFilePath, HH_HELP_CONTEXT, nCmd == HELP_CONTEXT ? dwData : 0) I've checked today with a smaller project where I'm also using the skin framework: In this smaller project I've no problem with HTMLHelp. |
|
Dieter
Product: Xtreme ToolkitPro version 15.2.1 Platform: Windows XP (32bit) - SP 3 Language: Visual C++ 6.0, Visual Studio 2010 |
|
Smucker
Senior Member Joined: 02 February 2008 Status: Offline Points: 156 |
Post Options
Thanks(0)
|
Here is some possible help:
I duplicated the problem here. The process is not exiting because of a deadlock. The main thread is in CXTPSkinObject::UnattachHook() waiting for a ::SendMessage() to the tab control in the Help window to complete. However, the thread trying to handle that message (in CXTPSkinManager::HookWndProc() ) is waiting on a critical section owned by the main thread. Here are the relevant stacks from the threads: Main thread: ... USER32.dll!_SendMessageW@16+0x7f thumbs8.exe!CXTPSkinObject::UnattachHook+0x57 thumbs8.exe!CXTPSkinManager::RemoveAll+0x98 thumbs8.exe!CXTPSkinManager::~CXTPSkinManager+0xfb thumbs8.exe!CXTPSkinManager::`scalar deleting destructor'+0x2b thumbs8.exe!CXTPSkinManager::CDestructor::~CDestructor+0x62 thumbs8.exe!`dynamic atexit destructor for '__xtpSkinManagerDestructor''+0x28 thumbs8.exe!doexit+0x10a thumbs8.exe!exit+0x12 ... Help thread: ... ntdll.dll!_ZwWaitForSingleObject@12+0x15 ntdll.dll!_RtlpWaitOnCriticalSection@8+0x155 ntdll.dll!_RtlEnterCriticalSection@4+0x152 thumbs8.exe!CXTPLockGuard::LockThread+0x31 thumbs8.exe!CXTPLockGuard::CXTPLockGuard+0x33 thumbs8.exe!CXTPSkinManager::Lookup+0x56 thumbs8.exe!CXTPSkinManager::HookWndProc+0x2e USER32.dll!_InternalCallWinProc@20+0x23 USER32.dll!_UserCallWinProcCheckWow@32+0x109 USER32.dll!_DispatchClientMessage@24+0xe0 USER32.dll!___fnDWORD@4+0x2b ntdll.dll!_KiUserCallbackDispatcher@12+0x2e USER32.dll!__PeekMessage@24+0x88 USER32.dll!_PeekMessageA@20+0x142 hhctrl.ocx!?AWMessagePump@@YGXPAUHWND__@@@Z+0x5c hhctrl.ocx!_HhWindowThread@4+0x10e thumbs8.exe!CXTPSkinManagerApiHook::ThreadProcHook+0x62 ... One simple solution, which also helps release builds of complex applications to exit quickly, is to simply TerminateProcess() once external resources (databases, writable files, sockets, etc.) are closed, rather than go through the many and various laborious cleanup routines for memory, handles, etc. However, I wouldn't recommend this on Windows 9x/ME because GDI handles, color profiles, and shared memory will leak. Another unrelated note: you can build applications compatible with Windows 98 & NT4 with any later version of Visual C++, you just have to be careful not to use any unsupported APIs or dlls, or provide code to dynamically bind for libraries/apis similarly to what you're doing in CheckHtmlHelp(). I believe Codejock has some helper routines to make this easier too. |
|
Product: Xtreme Toolkit Pro version 13.2 (Unicode, static build)
Platform: Windows 200x/XP/Vista/Win7 (32/64 bit) Language: Visual C++ 9.0 (Studio 2008) |
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
Thanks, Yes it can be reason. We are changing RemoveAll method.
Dieter , Please temporary comment CXTPLockGuard lock(m_csObjects); inside CXTPSkinManager::RemoveAll and rebuild library.
|
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
Dieter
Groupie Joined: 22 July 2006 Status: Offline Points: 15 |
Post Options
Thanks(0)
|
Thank you very much both of you!
My problem is solved.
You're right, I should switch to an actual version of Visual C++. Visual Studio 2008 and 2010 have so many new features, I'm using 2008 already for new applications. And it becomes more and more difficult to get third party development tools which still work with Visual C++ 6.0. |
|
Dieter
Product: Xtreme ToolkitPro version 15.2.1 Platform: Windows XP (32bit) - SP 3 Language: Visual C++ 6.0, Visual Studio 2010 |
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |