PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : spezielles Design von Windows-Fenstern


blax
2006-11-12, 14:52:23
Hi,
ich hab eine eher allgemein gehaltene Frage:

Welche Möglichkeiten gibt es Windowsfenster zu programmieren?
Mit bekannt ist:
-) MFC -Fenster
---erlaubt mir schnell ein einfaches Windows-Fenster und Unterfenster zu erzeugen.

-) DirectX / OpenGL
---erlaubt Full-Screen-Anwendungen und tiefen Eingriff auf die Grafikkarten-funktionen. Hat standardmäßig keine Eigenschaften von Windows-Fenstern..


das is alles was mein Überblick über Windows-Programmierung (Fenstergestaltung) hergibt.

Ich bitte das richtig zu stellen bzw. zu vervollständigen damit ich mir ein klares Bild machen kann :)
Außerdem würde mich auch interessieren mit welchem Verfahren es möglich ist ein Design wie es der neue Media-Player hat zu machen.

danke im Vorraus,
lg Sevi

Expandable
2006-11-12, 15:44:47
Da würde ich dir doch sehr die Windows Presentation Foundation, welche mit dem neuen .NET Framework 3.0 veröffentlich wurde (vor ein paar Tagen erst), zu verwenden. Das gibt dir so ziemlich die Kontrolle über alles, was du machen willst.

Im Gegensatz zu MFC/Windows Forms ist WPF DX9-hardwarebeschleunigt (funktioniert allerdings nur unter XP/2003/Vista), der große Vorteil gegenüber einer reinen selbstgeschriebenen DX/OGL-Version ist allerdings, dass du nicht wirklich jedes Control selbst schreiben musst.

In WPF sind die Controls look-less, d.h., die Controls stellen nur Funktionalitäten und ein Standardaussehen bereit. Du kannst aber ganz einfach einen Button mit einem roten Rand und hellgrüner Innenfläche erzeugen. Das war früher nie so einfach möglich.

blax
2006-11-12, 16:46:46
hmm...danke

und weißt du zufällig auch wo ich ein Tutorial o. ä. finde in dem mir beschrieben wird, wie ich ein Fenster wie den Media-Player gestalte?

lg Sevi

blax
2006-11-12, 17:17:46
#include <windows.h>
#include "area.cpp"
#include "battle.cpp"

HWND CreateMainWindow(HINSTANCE hInstance);

LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

HWND hWnd=0;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){

hWnd=CreateMainWindow(hInstance);

return 0;
}

HWND CreateMainWindow(HINSTANCE hInstance){
WNDCLASSEX wndClass;

wndClass.cbSize = sizeof(WNDCLASSEX);
wndClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = MessageHandler;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = "WindowClass";

wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO);

RegisterClassEx(&wndClass);

return CreateWindowEx(NULL, "WindowClass", "blaxes", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 800, 700, NULL, NULL, hInstance, NULL);
}

LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch(msg){
case WM_CREATE:
break;
case WM_CLOSE:
PostQuitMessage(0);
break;
}

return DefWindowProc(hWnd, msg, wParam, lParam);
}
So hab ich damals immer Windows-Fenster erzeugt. So hab ich das mal in einem Buch gelernt. Was hat das für Vor/Nachteile? bzw. wie nennt man diese Art von Fenster-Erzeugung? API-Window..?
Und kann man hier auch das Design beliebig anpassen (Rahmen gelb, Oval statt rechteckig,...)

lG sevi

Expandable
2006-11-12, 19:33:55
*lol*

Win32-API... glaub mir, damit wirst Du nicht glücklich ;o) Ansonsten google halt mal nach WPF-Tutorials (dazu brauchst Du aber das .NET Framework 3.0, sowie Visual Studio 2005 mit entsprechendem AddOn). Fensterchen kannst Du dann auch ganz bequem mit dem Microsoft Expression Interactive Designer zusammenklicken (!! kein hässlicher Win32-API-Code mehr!)!

blax
2006-11-12, 19:44:44
ein bisschen irritiert mich nur dass es unter win2k nicht funktionieren wird..nach deiner erklärung

Expandable
2006-11-12, 20:49:46
Nein, das .NET Framework 3.0 läuft nur unter XP SP2, Server 2003 und Vista.

Ansonsten verwende das .NET Framework 2.0, das läuft (AFAIK?) auch noch unter 2000. Allerdings ist es da schon wieder etwas umständlicher, ein gut aussehendes GUI hinzubekommen. Aber immer noch 1000 mal besser als mit der Win32-API ;o)

blax
2006-11-12, 22:53:22
danke..passt, werd ich mich damit zufrieden geben.. übrigens

Ansonsten verwende das .NET Framework 2.0, das läuft (AFAIK?) auch noch unter 2000.

System Requirements

* Supported Operating Systems: Windows 2000 Service Pack 3; Windows 98; Windows 98 Second Edition; Windows ME; Windows Server 2003; Windows XP Service Pack 2

* Required Software:

o Windows Installer 3.0 (except for Windows 98/ME, which require Windows Installer 2.0 or later). Windows Installer 3.1 or later is recommended.
o IE 5.01 or later: You must also be running Microsoft Internet Explorer 5.01 or later for all installations of the .NET Framework.
* Disk Space Requirements: 280 MB (x86), 610 MB (x64)
Quelle: http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en

lg Sevi

Gast
2006-11-13, 12:33:49
[Win32-Code]

So hab ich damals immer Windows-Fenster erzeugt. So hab ich das mal in einem Buch gelernt. Was hat das für Vor/Nachteile? das hat den "Vorteil", daß es die einzige Möglichkeit ist, unter Windows Fenster zu programmieren. Alle möglichen Bibliotheken, wie die MFC, die VCL (Borland), die Windows.Forms von .NET, die Windows-Versionen von QT und SDL, usw. machen intern immer genau so was. Nur halt so daß du's nicht siehst.

Und mit DirectX und OpenGL kannst du gar nicht Fenster programmieren. Für die mußt du schon existierende Fenster anliefern. Wohl gibt es für OpenGL-Programme die GLUT-Bibliothek, die aber auch wieder (in der Windows-Verison) nur auf die Win32-API wrappt.

bzw. wie nennt man diese Art von Fenster-Erzeugung? API-Window..?
Und kann man hier auch das Design beliebig anpassen (Rahmen gelb, Oval statt rechteckig,...)die Farben kannst du verändern, die Form eher nicht. Außer unter XP wenn die Luna-Oberfläche aktiv ist.

Xmas
2006-11-13, 13:00:26
die Farben kannst du verändern, die Form eher nicht. Außer unter XP wenn die Luna-Oberfläche aktiv ist.
Man kann mit SetWindowRgn auch die Form recht beliebig verändern, wie das so manche Media-Player tun. Nur sollte man dann natürlich kein WS_OVERLAPPEDWINDOW verwenden.

blax
2006-11-13, 13:51:47
könntet ihr mir ein beispiel dafür geben...ein ganz knappes kurzes. :))
..indem ich einfach seh wie man eine spezielle Form verwendet?

das wär geil,
danke,
lg Sevi

Gast
2006-11-13, 14:15:52
könntet ihr mir ein beispiel dafür geben...wenn du uns jetzt noch sagen würdest, worauf genau sich deine Frage bezieht (quoten wäre hilfreich gewesen...), könnten wir dies vermutlich tun ;)

blax
2006-11-13, 18:42:58
Man kann mit SetWindowRgn auch die Form recht beliebig verändern, wie das so manche Media-Player tun. Nur sollte man dann natürlich kein WS_OVERLAPPEDWINDOW verwenden.

Mein gewünschtes Beispiel hat sich auf die Form, die z.b. der Media-Player hat, bezogen. Natürlich genügt mir ein Beispiel, dass im Ansatz erklärt wie sowas geht..alles klar? :)

lg Sevi

Juerg
2006-11-13, 20:23:13
Guggscht Du hier: :wink:

Changing the Default form of Dialog Window
http://www.codeproject.com/dialog/Ch_Dlg.asp?df=100&forumid=138183&exp=0&select=1002725