[BCB] Het desktop window vervangen

Pagina: 1
Acties:

  • Lethalis
  • Registratie: April 2002
  • Niet online
Ik ben het volgende van plan: mijn eigen desktop window programmeren en dat van de Explorer shell te vervangen.

Dit bestaat mijns inziens uit 2 stappen:

1)
Het desktop window van Explorer verbergen. Daar heb ik al iets op gevonden:

code:
1
2
3
// Code to hide the Windows Desktop
HWND wDesk = FindWindow("Progman", NULL);
ShowWindow(wDesk, SW_HIDE);


2)
Zelf een vervangend window aanmaken. Hier ontstaan de problemen.

Een aantal dingen zijn duidelijk. Ik maak gewoon een TForm aan met de grootte van de desktop area (maximized en zonder border).

code:
1
2
3
4
5
6
7
// Resize window to size of Windows Desktop
RECT rDesk;
GetWindowRect(wDesk, &rDesk);
this->Left = rDesk.left;
this->Top  = rDesk.top;
this->Width = rDesk.right - rDesk.left;
this->Height = rDesk.bottom - rDesk.top;


Maar 1 groot probleem: hoe zorg ik ervoor dat het window altijd beneden blijft? Dus als ik erop klik, dat het net zoals het desktop window van Explorer niet naar voren komt en alle draaiende programma's verbergt?

Bij voorbaat dank :)

Ask yourself if you are happy and then you cease to be.


  • Lethalis
  • Registratie: April 2002
  • Niet online
Ik heb het tijdelijk opgelost door de volgende code in OnActivate en OnMouseDown te plaatsen:

code:
1
2
// Set Window on bottom
SetWindowPos(this->Handle, HWND_BOTTOM, Left, Top, Width, Height, SWP_NOACTIVATE);


Eleganter zou het overloaden van de CreateWindowEx zijn, maar ik ken de parameters niet..

Ask yourself if you are happy and then you cease to be.


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:48
Hoe bedoel je, je kent de parameters niet?
In de MSDN moet er toch wel informatie te vinden zijn over CreateWindowEx en zijn parameters?

https://fgheysels.github.io/


  • Lethalis
  • Registratie: April 2002
  • Niet online
Ja natuurlijk :) maar niet de combinatie om zo een dergelijk window te creeren. Heb al vaker van alles geprobeerd, maar telkens krijgt hij toch de focus weer..

Ask yourself if you are happy and then you cease to be.


  • Lethalis
  • Registratie: April 2002
  • Niet online
Ghe, volgens mij heb ik hem:

code:
1
2
3
4
5
void __fastcall TiDesk::CreateParams(TCreateParams &Params)
{
  TForm::CreateParams(Params);
  Params.ExStyle = Params.ExStyle | WS_EX_NOACTIVATE;
}


CreateParams overloaded :)

Ask yourself if you are happy and then you cease to be.


  • Wortelpudding
  • Registratie: Februari 2002
  • Niet online
[beetje offtopic]
Waarvoor wil je eigenlijk precies het desktop window vervangen? Soort zelfgeprogrammeerde Active Desktop ofzo?
[/beetje offtopic]

  • Lethalis
  • Registratie: April 2002
  • Niet online
Ja, soort van. Ben een programma aan het schrijven, genaamd iDesktop :)

Screenshot

Ben er vandaag mee begonnen. Ik wil volledige controle over mijn desktop en deze uitbreiden met eigen widgets (textlinks met schaduw, images die je overal kunt plaatsen, trackers, enzovoorts)..

Het programma is voor Windows 2000 en XP (dit omdat WS_EX_NOACTIVATE niet werkt met oudere Windows versies).

Maak er binnenkort een site voor aan.

Ask yourself if you are happy and then you cease to be.


  • Wortelpudding
  • Registratie: Februari 2002
  • Niet online
Leuk idee :) 8)
We zien hem dus tzt wel op GoT verschijnen :9

  • nhimf
  • Registratie: September 2000
  • Laatst online: 31-08 19:16

nhimf

Lekker belangrijk allemaal

Hmmz klinkt interesstant allemaal....

Zelf programmeer ik ook in BCB.

Heb je niet wat meer info over hoe en wat enzo? ;)

Ik stink niet, ik ruik gewoon anders


  • nhimf
  • Registratie: September 2000
  • Laatst online: 31-08 19:16

nhimf

Lekker belangrijk allemaal

Waar heb je eigenlijk die tutorial vandaan?

Ik zie nl dat in die link van je ;)

Ik stink niet, ik ruik gewoon anders


  • nhimf
  • Registratie: September 2000
  • Laatst online: 31-08 19:16

nhimf

Lekker belangrijk allemaal

ps. (ja weer ik lol)

Hoe kan je een tray app maken? Daar was ik al is naar opzoek maar misschien dat je dat toevallig weet?

Ik stink niet, ik ruik gewoon anders

Pagina: 1