Voor dat er rtfm termen geroepen worden: ja ik heb gezocht op het Internet, alsmede hier op het forum naar het probleem dat ik ga beschrijven. De oplossingen die ik gevonden heb op het Internet lossen mijn probleem slechts gedeeltelijk op, maar het resultaat is zo vies (en introduceert bovendien een ander ongemak) dat ik het toch ook hier probeer.
Sinds kort gebruiken we op het werk Borland C++ Builder 6 (daarnaast maken we al jaren gebruik van MS VC++). De volgende situatie:
- Ik heb een normale applicatie (GUI, geen console) gemaakt met een aantal dialogs (forms)
- Ik heb een DLL gemaakt met daarin verschillende classes zoals een SQL wrapper en een aantal dialogs (forms).
Tijdens het compileren/linked van de DLL heb ik een import library laten genereren, welke ik in het project van de applicatie heb opgenomen.
Alles werkt in principe prima. De classes in de DLL kan in gebruiken, de dialogen ook. Er is echter één klein detail. Sinds ik de DLL in mijn applicatie gebruik, wordt voor ieder dialog dat ik open (hetzij uit mijn applicatie/DLL/of zelfs common dialogs van Windows) een button op de taakbalk gemaakt. Dit is bijzonder vervelend en ik heb echt geen idee waarom dit gebeurt. Sterker nog, wanneer ik dan een van die buttons aan klik om een ander dialog van mijn applicatie te activeren (dat niet het actieve venster is), dan wordt het 'geactiveerd'. Dit zet ik met opzet tussen '', want het venster wordt wel zichtbaar (op de voorgrond gezet) maar is verder niet te benaderen.
Nu wordt er op de Internet-sites die ik heb bezocht aangeraden om dan je dialogen de style 'WS_EX_TOOLWINDOW' te geven. Maar dit vind ik dus echt niet de bedoeling:
- Dit zul je dan bij ieder dialoog (dus ook die van Windows) moet gaan toepassen. Vies!
- De applicatie komt niet meer voor in de 'ALT-TAB' lijst.
Op de gevonden Internet-sites, beschreef iedereen soortgelijke problemen, maar had niemand een oplossing (behalve dan het aanpassen van de Extended Style van je window).
Dit is echt geen optie. Heeft iemand ooit een soortgelijk probleem gezien/gehad, weet iemand een oplossing?
Ik heb zelf het vermoeden dat het aan de memory manager van Borland ligt die met de DLL meegelinkt wordt (verplicht, anders moet ik de opzet van de functie's aanpassen).
p.s.: Indien ik mijn applicatie geen gebruik meer laat maken van de DLL en alle code uit de DLL gewoon in de applicatie zet, dan werken de dialogen zoals je zou verwachten. Dat wil zeggen: Er komt 1 button op de taakbalk voor de gehele applicatie, ongeacht hoeveel vensters er open staan.
Sinds kort gebruiken we op het werk Borland C++ Builder 6 (daarnaast maken we al jaren gebruik van MS VC++). De volgende situatie:
- Ik heb een normale applicatie (GUI, geen console) gemaakt met een aantal dialogs (forms)
- Ik heb een DLL gemaakt met daarin verschillende classes zoals een SQL wrapper en een aantal dialogs (forms).
Tijdens het compileren/linked van de DLL heb ik een import library laten genereren, welke ik in het project van de applicatie heb opgenomen.
Alles werkt in principe prima. De classes in de DLL kan in gebruiken, de dialogen ook. Er is echter één klein detail. Sinds ik de DLL in mijn applicatie gebruik, wordt voor ieder dialog dat ik open (hetzij uit mijn applicatie/DLL/of zelfs common dialogs van Windows) een button op de taakbalk gemaakt. Dit is bijzonder vervelend en ik heb echt geen idee waarom dit gebeurt. Sterker nog, wanneer ik dan een van die buttons aan klik om een ander dialog van mijn applicatie te activeren (dat niet het actieve venster is), dan wordt het 'geactiveerd'. Dit zet ik met opzet tussen '', want het venster wordt wel zichtbaar (op de voorgrond gezet) maar is verder niet te benaderen.
Nu wordt er op de Internet-sites die ik heb bezocht aangeraden om dan je dialogen de style 'WS_EX_TOOLWINDOW' te geven. Maar dit vind ik dus echt niet de bedoeling:
- Dit zul je dan bij ieder dialoog (dus ook die van Windows) moet gaan toepassen. Vies!
- De applicatie komt niet meer voor in de 'ALT-TAB' lijst.
Op de gevonden Internet-sites, beschreef iedereen soortgelijke problemen, maar had niemand een oplossing (behalve dan het aanpassen van de Extended Style van je window).
Dit is echt geen optie. Heeft iemand ooit een soortgelijk probleem gezien/gehad, weet iemand een oplossing?
Ik heb zelf het vermoeden dat het aan de memory manager van Borland ligt die met de DLL meegelinkt wordt (verplicht, anders moet ik de opzet van de functie's aanpassen).
p.s.: Indien ik mijn applicatie geen gebruik meer laat maken van de DLL en alle code uit de DLL gewoon in de applicatie zet, dan werken de dialogen zoals je zou verwachten. Dat wil zeggen: Er komt 1 button op de taakbalk voor de gehele applicatie, ongeacht hoeveel vensters er open staan.
"The fastest code, is the code that is never called."