Randlose GUI mit musik

hai.

wollte mal fragen mit welcher sprache man so kleine gui programme schreibt die randlos(ohne normalen windows minimieren und schliessen rahmen) sind und mit musik drin. und all das in eine winzige *.exe datei gepackt.

habe mir delphi 7 und vc++ '05 besorgt aber stehe eigentlich noch am anfang. habe zwar schon ein paar kleinere sachen geschafft aber bei solchen programmen ist mein latein am ende.

glaube mittlerweile schon das ich das alles ganz falsch anfangen habe, da ich hier schon öfters gelesen habe, dass c++ irgendwie mehr für konsolenanwendungen gut ist. viel weiter hab ich es auch noch nicht geschafft ausser mit delphi. aber da scheint es auch viel einfacher zu sein mit den GUI's..

hier ein beispiel:
http://www.youtube.com/watch?v=sEQ38uG-CYc&feature=related

hoffe ihr könnt mir ein paar tipps geben :rolleyes:
 
Delphi ist für ein Vorhaben auch definitiv die bessere Wahl. Mit C++ ist das ganze auch nicht unmöglich, aber doch umständlicher.

Eine andere Alternative wäre wohl noch Java - da gibt es auch Editoren in denen du dir den Kram so zurecht klicken kannst.
Wie schwierig es ist den Windows Rahmen drumherum wegzubekommen kann ich dir allerdings nicht sagen.
 
ja das ist genau das, was ich gesucht habe. werde mich mal einlesen und dann meine ersten gehversuche starten bzw error produzieren :wink:

vielen dank an euch.
 
Wie schwierig es ist den Windows Rahmen drumherum wegzubekommen kann ich dir allerdings nicht sagen.

Es ist nicht allzu schwierig:
Bei Delphi in der IDE die Eigenschaft FormStyle auf bsNone setzen.
So gibt es keinen Rahmen. Die Buttons lassen sich zur Not nochmal seperat deaktivieren, müsste das aber nochmal nachschauen.
 
zusätzlich:
http://www.hackerboard.de/238746-post12.html
D.h schau Dir die Region-Funktionen an:
http://msdn.microsoft.com/en-us/library/dd162915(v=VS.85).aspx
damit kannst du die "Ränder" abschneiden.

Die Buttons wird man "manuell" Nachprogrammieren müssen - z.B in dem man Bilder platziert und die Mausevents abfragt (Mausposition im Fenster + Reaktion darauf, wenn Mauskoordinaten auf den Buttonkoordinaten liegen:
GetWindowRect API für Fensterkoordinaten
GetCursorPos für Cursor Koordinaten, dann ein bisschen Rechnen, um festzustellen, wo im Programmfenster der Cursor ist ;)).

Man könnte auch "Bilder"-Buttons nutzen:
Style des Buttons setzen: BS_BITMAP (kann man auch über SendMessage übermitteln) und dann das Bild darauf mittels SendMessage(bla, buttonHandle, BM_SETIMAGE). Für "runde" Buttons wird man aber afaik noch gleich BS_OWNERDRAW als Style setzen müssen und den Button komplett selber malen.
 
also das mit dem BorderStyle auf bsNone setzen funktioniert schonmal. aber da taucht auch schon das nächste problem auf: ich kann das fenster nicht mehr verschieben.

habe jetzt diverse anfänger tutorials durchgelesen für delphi und überall stehen nützliche code-snippets dabei aber nirgens steht, wohin damit.


snippet um das fenster überall verschieben zu können:
Code:
procedure WMNCHitTest(var M: TWMNCHitTest); 
  message wm_NCHitTest;
Code:
procedure TForm1.WMNCHitTest (var M: TWMNCHitTest);
begin
  inherited;
  if M.Result = htClient then 
    M.Result := htCaption;
end;
und hier mein ganzer code:
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation


{$R *.dfm}


end.
habe den code an jeder stelle ausprobiert aber überall nur error. was mach ich falsch? :(


EDIT: ok hab das ganze mal aufgeteilt und durch zufall hinbekommen.

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
  private
    { Private-Deklarationen }
  public
  procedure WMNCHitTest(var msg: TWMNCHitTest);
  message wm_NCHitTest;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMNCHitTest(var msg: TWMNCHitTest);
begin
  inherited;
  if msg.Result = htClient then
    msg.Result := htCaption;
end;


end.


jetzt weiss ich schonmal ein bisschen mehr und kann das nächste angehen :)
 
Zuletzt bearbeitet:
Wpf

wenns wirklich nur windows applikationen sein sollen und du vc++ hast wäre das mein tipp. allerdings hab ich noch keine erfahrung mit WPF (windows presentation fondation) & vc++.
 
Zuletzt bearbeitet:
@ Anuran: Das ist zumindest schonmal die richtige Position für den Code-Schnipsel.

Für die Musik brauchst du aber mit den Bordmitteln glaube ich eine externe Datei (am besten .mp3 oder .wav).
 
wenns wirklich nur windows applikationen sein sollen und du vc++ hast wäre das mein tipp. allerdings hab ich noch keine erfahrung mit WPF (windows presentation fondation) & vc++.

Ich frage mich auch, warum er es so "umständlich" machen will.

Lad dir doch die Visual Studio 2010 Express und erstell dir mit C# (.NET Framework) eine solche Applikation. Allein die GUI bekommst du dadurch mit wenigen Klicks fertiggestellt.
Für einen Neuling in der Programmierung sind Sprachen wie C# und Java einfach deutlich konstruktiver.
 
Zurück
Oben