Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.10.2007, 12:45

Mehrere Fragen wo ich keine Antworten gefunden habe ;)

Hi an alle,

ich habe mehrere Fragen zu einem Projekt was ich gerade mache.

1) Wie kann ich ein Fenster über den ganzen Desktop zeichen (ohne in den fullscreen zu wächseln) und sodass auch noch weiter der User weiterhin auf den Desktop klicken kann und z.b. seine Icons benutzen kann obwohl mein Fenster an der Spitze ist. (Ich will ein animiertes Maxerl über den screen rennen lassen jedoch soll der User noch weiterhin fähig sein seinen desktop zu benutzen)

2) Wie kann ich ein Fenster in MFC machen ohne einen Rahmen bzw. Exit/Minimize/Maximize Button zu haben

3) wie kann ich in DirectX meine Fensterfarbe auf transparent einstellen

mfg

Yosh

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

04.10.2007, 14:42

zu 1.: um auf dem desktop zu zeichnen, erstmal kein fenster erstellen und dann beim erzeugen des Device folgendes:

C-/C++-Quelltext

1
2
  HDC hDC;
  CreateCompatibleDC(0,&hDC);


dann ganz normal befehle zum zeichnen nutzen

zu 2.: da es bei der APi beim erzeugen angegeben wird, solltest du bei den erzeuge-methoden gucken, die schon erzeugt werden, wenn du ein mfc-projekt machst.

zu 3.: das verstehe ich nicht ganz. meinst du ziel-colorkeys?

3

04.10.2007, 17:21

Zu 3: Über den Alpha-Channel.
Sprachen: C/C++, C#, Assembler (16-Bit), QuickBASIC

4

06.10.2007, 11:56

AD (1)
Willst du direkt auf den Desktop zeichnen? Evtl. wäre http://www.codeproject.com/bitmap/DeskShoot.asp etwas für dich.

AD (2)
CWnd hat eine Funktion Create. Du kannst also hingehen und in der von CWinApp abgeleiteten Klasse (CMyProjectApp) in der InitInstance das erstellen/aufrufen des Fensters entsprechend anpassen.
Wenn dir das zu umständlich ist, holst du dir die aktuell gesetzten Fensterstiele(GetWindowLong(hWnd, GWL_STYLE)) und nimmst per &~(WS_XYZ) die entsprechenden Styles weg. Dann die neuen Stiele für das Fenster setzen (SetWindowLong(hWnd, GWL_STYLE, ...)) und neu zeichnen.

AD (3)
http://msdn2.microsoft.com/en-us/library/ms633540.aspx
http://msdn2.microsoft.com/en-us/library/ms633556.aspx
...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

5

10.10.2007, 08:59

Danke an Alle zuerst für die Antworten.

Developer mit dem kann Desktopshoot kann ich leider nichts anfangen, da ich directX 3DMeshUp-Modelle auf den Desktop zeichnen will und diese animieren. Daher kann ich leider nicht nur mit GDI+ arbeiten. Aber danke.

TrommelBommel was meinst du mit dem Device bitte erkläre mir das und am besten wäre wenn du mir ein kleines Codebeispiel zeigen könntest, in dem direkt am Desktop ein Dreieck gezeichnet wird, da ich überhaupt nicht weiß wie ich das machen soll was du meinst.

mfg

Yosh

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

10.10.2007, 13:54

Für DX musst du, soweit ich weiß, ein Fenster angeben. Glaube kaum, dass du da mit der Idee weit kommen wirst. AUßer man kommt irgendwie an den Desktop, so dass er als Fenster gilt.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

7

10.10.2007, 16:09

asoo sowat musste mir schon sagen ;)

mit dem fenster hat nox recht ohne gehts nicht. das mit dem desktop als "fenster" wird meiner meinung nach auch kaum gehen. das funktioniert mit GDI/+ (was ich dir vorschlagen wollte).

du könntest höchtens probieren:
- die ganze sache im Fenstermodus zu machen (v. Direct3d aus)
- stellst bei bei CreateWindowEx Statt WS_OVERLAPPEDWINDOW auf WS_POPUP
- und für fensterfarbe @ post von Deviloper

hier nen bissle code

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
//Stellt fenster ein, weiss ja nich was du nutzt ob api oda mfc, wxwidgets 

HWND CreateShelLWindow(HINSTANCE hInstance)
{
    WNDCLASSEX wndClass;

    /*...*/

   RegisterClassEx(&wndClass);

   return CreateWindowEx(0,"WinClass","Dessipaint",WS_POPUP  | WS_VISIBLE,....)
}

//direct3d fenstermodus wirste ja wohl wissen :D

8

10.10.2007, 17:16

Wenn du bei der DirectX-Methode CreateDevice als dritten Parameter GetDesktopWindow() angibst (normalerweise übergibst du hier den Handle des zuvor erstellten Fensters), dann kannst du auf den Desktop pinseln. Allerdings gilt es dann Probleme wie Überzeichnen der Taskleiste und Icons, Setzen des Fokus etc. zu lösen.
fka tm

Werbeanzeige