<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="https://syndication.webwiz.net/rss_namespace/">
 <channel>
  <title>Codejock Developer Community : Skin Framework</title>
  <link>http://forum.codejock.com/</link>
  <description><![CDATA[This is an XML content feed of; Codejock Developer Community : Skin Framework : Last 10 Posts]]></description>
  <copyright>Copyright (c) 2006-2013 Web Wiz Forums - All Rights Reserved.</copyright>
  <pubDate>Sat, 04 Apr 2026 21:44:36 +0000</pubDate>
  <lastBuildDate>Fri, 13 Mar 2026 10:21:05 +0000</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 12.04</generator>
  <ttl>30</ttl>
  <WebWizForums:feedURL>forum.codejock.com/RSS_topic_feed.asp?FID=130</WebWizForums:feedURL>
  <image>
   <title><![CDATA[Codejock Developer Community]]></title>
   <url>http://forum.codejock.com/forum_images/codejock-logo.gif</url>
   <link>http://forum.codejock.com/</link>
  </image>
  <item>
   <title><![CDATA[Skin Framework : Deadlock?]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24629&amp;PID=79364&amp;title=deadlock#79364</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=8199">astoyan</a><br /><strong>Subject:</strong> Deadlock?<br /><strong>Posted:</strong> 13 March 2026 at 10:21am<br /><br /><div>Hello,</div><div><br></div><div>Thanks for reporting the issue. Please check your private messages for a potential solution and confirm if it works. Once confirmed, the changes will be integrated to the next update.</div><div><br></div><div>Regards,</div><div>&nbsp; &nbsp;Alexander</div>]]>
   </description>
   <pubDate>Fri, 13 Mar 2026 10:21:05 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24629&amp;PID=79364&amp;title=deadlock#79364</guid>
  </item> 
  <item>
   <title><![CDATA[Skin Framework : Office2010 dark: disabled items are not readable]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24590&amp;PID=79360&amp;title=office2010-dark-disabled-items-are-not-readable#79360</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=109">mgampi</a><br /><strong>Subject:</strong> Office2010 dark: disabled items are not readable<br /><strong>Posted:</strong> 12 March 2026 at 9:31am<br /><br />Hi;<br><br>I have created a new issue (<a href="https://support.codejock.com/Issue_view.asp?IssueNbr=73708" target="_blank" rel="nofollow">https://support.codejock.com/Issue_view.asp?IssueNbr=73708</a>) that contains a sample project to show the problem.]]>
   </description>
   <pubDate>Thu, 12 Mar 2026 09:31:45 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24590&amp;PID=79360&amp;title=office2010-dark-disabled-items-are-not-readable#79360</guid>
  </item> 
  <item>
   <title><![CDATA[Skin Framework : Deadlock?]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24629&amp;PID=79359&amp;title=deadlock#79359</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=3213">rdhd</a><br /><strong>Subject:</strong> Deadlock?<br /><strong>Posted:</strong> 27 February 2026 at 4:49pm<br /><br /><div>I see this once in a while. I am starting up a debug session and open one of our files. The app hangs. take a look at this code:</div><div><br></div><div>_XTP_EXT_CLASS CXTPSkinManager* AFX_CDECL XTPSkinManager()<br>{<br>&nbsp; &nbsp; XTP_SKINFRAMEWORK_GLOBALLOCK_SHARED_SCOPE();<br><br>&nbsp; &nbsp; if (CXTPSkinManager::s_pInstance == NULL)<br>&nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; CXTPSkinManager::s_pInstance = &amp;XTPSkinManagerSingleton::Instance();<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; return CXTPSkinManager::s_pInstance;<br>}</div><div><br></div><div>Note this line:</div><div><br></div><div>&nbsp; &nbsp; XTP_SKINFRAMEWORK_GLOBALLOCK_SHARED_SCOPE();</div><div><br></div><div>On the main thread the stack is:</div><div><br></div><div>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPSimpleCriticalSection::Enter() Line 100&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPSimpleCriticalSection::CLock::CLock(CXTPSimpleCriticalSection &amp; cs) Line 169&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPRWCriticalSection::LockShared(int bPopMode) Line 327&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPRWCriticalSection::LockShared() Line 227&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPRWCriticalSection::CSharedLock::CSharedLock(CXTPRWCriticalSection &amp; cs) Line 311&nbsp; &nbsp; C++<br>&gt;&nbsp; &nbsp; ToolkitPro2410vc170x64UD.dll!XTPSkinManager() Line 914&nbsp; &nbsp; C++<br><br></div><div>In the Enter() function I am stuck in this loop:</div><div><br></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (0 != m_nLock)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Sleep(dwTimeout);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (dwTimeout &lt; XTP_SYNC_MAX_EXPONENTIAL_TIMEOUT)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dwTimeout &lt;&lt;= 1;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br></div><div>Examining the plethora of ToolkitPro worker threads I find this one:</div><div><br></div>&nbsp; &nbsp; &nbsp;ntdll.dll!NtWaitForAlertByThreadId()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;ntdll.dll!RtlpWaitOnCriticalSection()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;ntdll.dll!RtlpEnterCriticalSectionContended()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;ntdll.dll!RtlEnterCriticalSection()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;ucrtbased.dll!00007ff8aa103817()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;ucrtbased.dll!00007ff8aa0ffb5a()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;ucrtbased.dll!00007ff8aa0fffcd()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;ucrtbased.dll!00007ff8aa0ff4df()&nbsp; &nbsp; Unknown<br>&gt;&nbsp; &nbsp; mfc140ud.dll!operator new(unsigned __int64 nSize, int nType, const char * lpszFileName, int nLine) Line 47&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;mfc140ud.dll!CObject::operator new(unsigned __int64 nSize, const char * lpszFileName, int nLine) Line 67&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPRWCriticalSection::IncrementLocalSharedLockCounter() Line 374&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPRWCriticalSection::LockShared(int bPopMode) Line 337&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPRWCriticalSection::LockShared() Line 227&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPRWCriticalSection::CSharedLock::CSharedLock(CXTPRWCriticalSection &amp; cs) Line 311&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!XTPSkinManager() Line 914&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPSkinManagerDetoursApiHook::OnHookGetProcAddress(HINSTANCE__ * hModule, const char * pszProcName) Line 2040&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;clr.dll!__delayLoadHelper2()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!__tailMerge_ole32_dll()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!RegMeta::CreateNewMD()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!Disp::DefineScope()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!PEFile::DefineEmitScope()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!Assembly::CreateDynamic()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!AppDomainNative::CreateDynamicAssembly()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;mscorlib.ni.dll!00007ff9aef92b48()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;mscorlib.ni.dll!00007ff9aef92957()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;mscorlib.ni.dll!00007ff9af9a640d()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;mscorlib.ni.dll!00007ff9af03bbec()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;mscorlib.ni.dll!00007ff9af9a5e2e()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;00007ff9511f8242()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;00007ff9511f2ae1()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;00007ff9511f2607()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;mscorlib.ni.dll!00007ff9aeff9f93()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;mscorlib.ni.dll!00007ff9aeff9bcd()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;00007ff9511ec3e7()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;00007ff9511e6fd4()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;00007ff9511e482e()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;00007ff9511e35a3()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;00007ff9511e3501()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;00007ff9511b5468()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!CallDescrWorkerInternal()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!CallDescrWorkerWithHandler()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!CallDescrWorkerReflectionWrapper(struct CallDescrData *,class Frame *)&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!RuntimeMethodHandle::InvokeMethod()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;mscorlib.ni.dll!00007ff9aeffef68()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;mscorlib.ni.dll!00007ff9aefdaa16()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!CallDescrWorkerInternal()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!CallDescrWorkerWithHandler()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!MethodDescCallSite::CallTargetWorker()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!DispatchInfo::InvokeMemberWorker(struct DispatchMemberInfo *,struct InvokeObjects *,int,int,int,int &amp;,int &amp;,long,struct tagDISPPARAMS *,struct tagVARIANT *,unsigned short,unsigned long,long *,struct tagVARIANT *,struct OBJECTHANDLE__ * *,int *,struct tagVARIANT * *)&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!DispatchInfo::InvokeMemberDebuggerWrapper(struct DispatchMemberInfo *,struct InvokeObjects *,int,int,int,int &amp;,int &amp;,long,struct tagDISPPARAMS *,struct tagVARIANT *,unsigned short,unsigned long,long *,struct tagVARIANT *,struct OBJECTHANDLE__ * *,int *,struct tagVARIANT * *,class Frame *)&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!DispatchInfo::InvokeMember(struct SimpleComCallWrapper *,long,unsigned long,unsigned short,struct tagDISPPARAMS *,struct tagVARIANT *,struct tagEXCEPINFO *,struct IServiceProvider *,unsigned int *)&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!InternalDispatchImpl_Invoke(struct IDispatch *,long,struct _GUID const &amp;,unsigned long,unsigned short,struct tagDISPPARAMS *,struct tagVARIANT *,struct tagEXCEPINFO *,unsigned int *)&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!Dispatch_Invoke(struct IDispatch *,long,struct _GUID const &amp;,unsigned long,unsigned short,struct tagDISPPARAMS *,struct tagVARIANT *,struct tagEXCEPINFO *,unsigned int *)&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!Dispatch_Invoke_CallBack(void *)&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;clr.dll!Dispatch_Invoke_Wrapper(struct IDispatch *,long,struct _GUID const &amp;,unsigned long,unsigned short,struct tagDISPPARAMS *,struct tagVARIANT *,struct tagEXCEPINFO *,unsigned int *)&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;partbrpD.dll!_com_invoke_helper(IDispatch * pDispatch, long dwDispID, unsigned short wFlags, unsigned short vtRet, void * pvRet, const wchar_t * pwParamInfo, char * argList, IErrorInfo * * pperrinfo) Line 322&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;partbrpD.dll!_com_dispatch_method(IDispatch * pDispatch, long dwDispID, unsigned short wFlags, unsigned short vtRet, void * pvRet, const wchar_t * pwParamInfo, ...) Line 83&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;partbrpD.dll!ExcelReader::GetExcelSheetCount(_bstr_t Filename, long * nSheets) Line 16&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;partbrpD.dll!JMReadHoleThreadStandardsFile_OpenXML2(GUserFileName excelFile, int isheet, int * pStatus, bool bReadingFromThread) Line 4792&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;partbrpD.dll!UJMReadHoleThreadStandardInfo(GUserText standard, int isheet, int * pStatus) Line 10822&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;partbrpD.dll!ReadDBSheetProc(void * pParam) Line 10869&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;mfc140ud.dll!_AfxThreadEntry(void * pParam) Line 109&nbsp; &nbsp; C++<br>&nbsp; &nbsp; &nbsp;ucrtbased.dll!00007ff8aa122ec5()&nbsp; &nbsp; Unknown<br>&nbsp; &nbsp; &nbsp;ToolkitPro2410vc170x64UD.dll!CXTPSkinManagerDetoursApiHook::ThreadProcHook(void * lpThreadData) Line 603&nbsp; &nbsp; C++<br><div><br></div><div><br></div><div>Notice that thread is also calling:</div><div><br></div><div>XTP_EXT_CLASS CXTPSkinManager* AFX_CDECL XTPSkinManager()<br>{<br>&nbsp; &nbsp; XTP_SKINFRAMEWORK_GLOBALLOCK_SHARED_SCOPE();<br><br>&nbsp; &nbsp; if (CXTPSkinManager::s_pInstance == NULL)<br>&nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; CXTPSkinManager::s_pInstance = &amp;XTPSkinManagerSingleton::Instance();<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; return CXTPSkinManager::s_pInstance;<br>}</div><div><br></div><div>Setting breakpoints I see the main thread is in the loop. Meanwhile the second thread never returns from the RtlpWaitOnCriticalObject.</div><div><br></div><div>Since we have entered idle processing and we are a COM app, the OS is freeing unused libraries. That goes thru _AfxCrtDumpClient which is what the main thread is hooking into when memory leak detection is running and the call to get the mscoree.dll is made:</div><div><br></div><div>void __cdecl _AfxCrtDumpClient(void * pvData, size_t nBytes)<br>{<br>&nbsp; &nbsp; if(_CrtReportBlockType(pvData) != _AFX_CLIENT_BLOCK)<br>&nbsp; &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; char sz&#091;256&#093;;<br>&nbsp; &nbsp; CObject* pObject = (CObject*)pvData;<br>&nbsp; &nbsp; bool fCLRPresent=(::GetModuleHandleW(L"mscoree.dll")!=NULL);<br><br></div><div>All other ToolkitPro threads look standard and are all "small stacks" waiting on an object.</div><div><br></div><div>When this happens all I can do is restart.</div>]]>
   </description>
   <pubDate>Fri, 27 Feb 2026 16:49:46 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24629&amp;PID=79359&amp;title=deadlock#79359</guid>
  </item> 
  <item>
   <title><![CDATA[Skin Framework : Office2010 dark: disabled items are not readable]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24590&amp;PID=79352&amp;title=office2010-dark-disabled-items-are-not-readable#79352</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=109">mgampi</a><br /><strong>Subject:</strong> Office2010 dark: disabled items are not readable<br /><strong>Posted:</strong> 17 February 2026 at 7:02am<br /><br /><div>Hi;</div><div><br></div><div>In my case I have a CXTPResizeDialog based window (contained in an AFX extension DLL).&nbsp;<br>Inside the dialog ressource I have a CXTPTabControl and a large toolbar (CXTPToolbar) on top.<br>The tab control with three pages includes another three dialogs that are dynamically created and added to the three tab pages inOnInitDIalog of the parent dialog.</div><div>That's all. With this scenario the disabled items within the child dialogs of the tab controls cannot be read - as shown in my initial screenshot.</div><div>&nbsp;</div>]]>
   </description>
   <pubDate>Tue, 17 Feb 2026 07:02:08 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24590&amp;PID=79352&amp;title=office2010-dark-disabled-items-are-not-readable#79352</guid>
  </item> 
  <item>
   <title><![CDATA[Skin Framework : Touchscreen failure when skin applied]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24626&amp;PID=79344&amp;title=touchscreen-failure-when-skin-applied#79344</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=3213">rdhd</a><br /><strong>Subject:</strong> Touchscreen failure when skin applied<br /><strong>Posted:</strong> 03 February 2026 at 9:43am<br /><br /><div>I have not been able to delve into this yet as I don't have a touchscreen. We have customers that are reporting that when we apply a skin touchscreen gestures no longer work. So, for example, pinch zoom and other functionality we support via WM_GESTURE/NOTIFY, WM_POINTERDOWN/UP/UPDATE and WM_TOUCH are all failing.</div><div><br></div><div>I previously posted about failures due to the&nbsp;DDEMLEvent window class not being filtered out and that I fixed that issue by adding my own filter. I am guessing that touchscreens support involves a window that is between "normal" windows that handles and forwards messages to the application.</div><div><br></div><div>Has anyone else noticed issues with skinning and gestures on touchscreens?</div><div><br></div><div>I also suspect the Microsoft Inking system would have issues too and will be looking into that since I think Inking and touchscreen support probably use the same underlying Windows technology.</div>]]>
   </description>
   <pubDate>Tue, 03 Feb 2026 09:43:09 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24626&amp;PID=79344&amp;title=touchscreen-failure-when-skin-applied#79344</guid>
  </item> 
  <item>
   <title><![CDATA[Skin Framework : Office2010 dark: disabled items are not readable]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24590&amp;PID=79307&amp;title=office2010-dark-disabled-items-are-not-readable#79307</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=9012">agontarenko</a><br /><strong>Subject:</strong> Office2010 dark: disabled items are not readable<br /><strong>Posted:</strong> 20 November 2025 at 4:09am<br /><br /><div>Hello,</div><div><br>I've tested checkbox control with Office 2010 black theme in RibbonSample (v24.2).&nbsp;<br>I add this code for test and any problem has not found. All works as expected.<br>m_chkPreview.SetCheck(TRUE);<br>m_chkPreview.EnableWindow(FALSE);<br>See please screenshot.<br><br>May be you have another case. How I can reproduce this bug with our sample?</div><div><br></div><div>Regards,</div><div>Artem Gontarenko</div><div><br></div><div><img src="uploads/9012/Ribb&#111;nSample_p7voaZj0zD.png" height="849" width="1440" border="0" /><br></div>]]>
   </description>
   <pubDate>Thu, 20 Nov 2025 04:09:19 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24590&amp;PID=79307&amp;title=office2010-dark-disabled-items-are-not-readable#79307</guid>
  </item> 
  <item>
   <title><![CDATA[Skin Framework : Lockup in skin framework]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24611&amp;PID=79302&amp;title=lockup-in-skin-framework#79302</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=3213">rdhd</a><br /><strong>Subject:</strong> Lockup in skin framework<br /><strong>Posted:</strong> 07 November 2025 at 3:44pm<br /><br /><div>I saw somewhere a comment to report any class that causes an issue in the skinning framework. Well today we found one. The window class name is "DDEMLEvent" and we are running a DEBUG build where an assert is being thrown in IsImplementedInSystemWindowModule. That assert locks up our app due to calls in threads to WaitForSingleObject.</div><div><br></div><div>We assert and then lockup because the skinning system cannot find a window proc for this&nbsp; class.</div><div><br></div><div>I asked my copilot why CJ could not find it. It examined the code in XTPSkinManager.cpp wheere SetHook tries to call AttachHook which eventually ends up in IsImplementedInSystemWindowModule where lpProc is nullptr. Then it said this:</div><div><br></div><div><br></div><div>1.&nbsp; &nbsp; Ownership and Lifecycle:<br>The DDEMLEvent window is created and managed by the operating system, specifically for DDEML's internal event handling. Its window procedure is private to the system DLLs (such as user32.dll), and not exposed for external use or modification.<br><br></div><div>2.&nbsp; &nbsp; No Public API:<br>Microsoft does not provide any documented API to retrieve, replace, or subclass the window procedure for DDEMLEvent. The class is not registered by application code, and its window proc is not accessible via standard Win32 APIs.<br><br></div><div>3.&nbsp; &nbsp; Isolation for Stability:<br>By keeping the window procedure internal, Windows ensures that DDEML's event handling remains stable and secure. Allowing external frameworks to hook or replace the window proc could introduce instability or security risks.<br><br></div><div>4.&nbsp; &nbsp; Framework Design:<br>Codejock and similar frameworks are designed to skin, subclass, or hook windows that are created by the application or by standard controls (e.g., buttons, edit controls, etc.). They rely on being able to access and replace the window procedure, which is not possible for system-managed classes like DDEMLEvent.</div><div><br></div><div>Summary:<br>Codejock cannot use or subclass the window proc for the DDEMLEvent class because it is a system-internal window class with a private window procedure, not exposed or intended for use by application frameworks. This is by design in Windows to protect internal event handling mechanisms.</div><div><br></div><div><br></div><div>I added the class name to the filtering system to avoid the lockup. This seems like a case where CJ just wants to avoid touching that class.<br><br></div>]]>
   </description>
   <pubDate>Fri, 07 Nov 2025 15:44:38 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24611&amp;PID=79302&amp;title=lockup-in-skin-framework#79302</guid>
  </item> 
  <item>
   <title><![CDATA[Skin Framework : CCheckListBox draws with mixed themes]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24596&amp;PID=79266&amp;title=cchecklistbox-draws-with-mixed-themes#79266</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=3213">rdhd</a><br /><strong>Subject:</strong> CCheckListBox draws with mixed themes<br /><strong>Posted:</strong> 21 August 2025 at 12:28pm<br /><br /><div>I found that scrolling the view resulted in OnHookDrawThemeBackground to bypass the skinning code because&nbsp;the DC has no hWnd associated with it and&nbsp;IsDCSkinned(hDC) returned FALSE. I have to apply the xtpSkinApplyDCs skin option before invoking the dialog. Unfortunately for me, that causes all windows to repaint when I apply it and also when I remove it. Apparently I never set that option when we start up because when I first worked with skins, it wasn't available. And we decided back then to not use CJ skinning as we were just experimenting with them.</div><div><br></div><div>Basically our app originally set the same options CJ does in the skin manager ctor and I used that to change the options to observe the skinning effects.</div><div><br></div><div>I also see a xtpSkinApplyCommandBarsFrame option is now available. But we skin the frame and CJ indicates the two are incompatible.</div>]]>
   </description>
   <pubDate>Thu, 21 Aug 2025 12:28:45 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24596&amp;PID=79266&amp;title=cchecklistbox-draws-with-mixed-themes#79266</guid>
  </item> 
  <item>
   <title><![CDATA[Skin Framework : CCheckListBox draws with mixed themes]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24596&amp;PID=79265&amp;title=cchecklistbox-draws-with-mixed-themes#79265</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=3213">rdhd</a><br /><strong>Subject:</strong> CCheckListBox draws with mixed themes<br /><strong>Posted:</strong> 21 August 2025 at 10:00am<br /><br /><div>Here is an image of the dialog when first launched and then right after I scroll the mouse wheel.</div><div><br></div><div><img src="uploads/3213/NoScrollAndScrolled..png" height="347" width="879" border="0" /><br></div>]]>
   </description>
   <pubDate>Thu, 21 Aug 2025 10:00:18 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24596&amp;PID=79265&amp;title=cchecklistbox-draws-with-mixed-themes#79265</guid>
  </item> 
  <item>
   <title><![CDATA[Skin Framework : CCheckListBox draws with mixed themes]]></title>
   <link>http://forum.codejock.com/forum_posts.asp?TID=24596&amp;PID=79264&amp;title=cchecklistbox-draws-with-mixed-themes#79264</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://forum.codejock.com/member_profile.asp?PF=3213">rdhd</a><br /><strong>Subject:</strong> CCheckListBox draws with mixed themes<br /><strong>Posted:</strong> 21 August 2025 at 9:52am<br /><br /><div>When we apply our skin and display a CDialog that has a CCheckListBox in it we initially see the skin applied to all the items in the list box. But scroll the mouse wheel and the items draw incorrectly. The items draw using the system theme. Checking and unchecking items result in them redrawing using the skin. I thought CJ skinning was categorized as Visual C++ MFC meaning it works well with MFC. CCheckListBox is a MFC class but it does do custom drawing. In the image I am going to (try) and paste here one can see our theme background and the theme text color. But the "View 1" checked box is drawn using the system theme. "Front" is not checked and is using the system theme. "Back" is checked and uses the skin (yes the check box is quite pixelized as we wait and hope for SVG support for check/radio button). The other white boxes are system themed. "Dimetric" is unchecked and using our skin. I got this image by launching the dialog and then checking elements. Then I scrolled. After that I unchecked and checked "Back" and then unchecked "Dimetric".</div><div><br></div><div>How do I address this issue?</div><div><br></div><div><img src="uploads/3213/CCheckListBox.png" height="1809" width="3337" border="0" /><br></div>]]>
   </description>
   <pubDate>Thu, 21 Aug 2025 09:52:38 +0000</pubDate>
   <guid isPermaLink="true">http://forum.codejock.com/forum_posts.asp?TID=24596&amp;PID=79264&amp;title=cchecklistbox-draws-with-mixed-themes#79264</guid>
  </item> 
 </channel>
</rss>