Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Sternformige, runde Fenster erstellen (mit C und C plus plus)

Mitglied: 31640

31640 (Level 1)

18.07.2006, aktualisiert 23.10.2012, 17230 Aufrufe, 11 Kommentare

Ich habe borland C++ Builder 6 benutzt, mit Visual C++ habe ich keine Erfahrung

Um ein rundes Fenster zu erstellen:

8dbe3f94c710916d7f3bccea1de24cb8-1 - Klicke auf das Bild, um es zu vergrößern

braucht man nur folgendes:

01.
{{HRGN R; 
02.
R=CreateEllipticRgn(0,0,200,200); 
03.
SetWindowRgn(Handle, R, TRUE);}}
die Parameter von CreateEllipticRgn(0,0,200,200);
heissen:
01.
CreateEllipticRgn(*linke Grenze*, 
02.
		  *obere Grenze*, 
03.
		  *rechte Grenze*, 
04.
		  *untere Grenze*);
Um ein rechteckigen Fenster zu erstellen
a2d9b71131aed7b12c7ed4169ea65a21-2 - Klicke auf das Bild, um es zu vergrößern

nutzt man

R=CreateRectRgn(100,0,200,200); Parameter wie oben
Rechteckiges Fenster mit gerundeten Ecken:
R=CreateRoundRectRgn(0,0,200,200,20,50);
die Parameter hab ich am Bild erklärt
(0b11a93d62fcf2a269275a99924f5d19-3 - Klicke auf das Bild, um es zu vergrößern)
R=CreateRoundRectRgn(L,T,R,D,A,B);
Um ein Polygones Fenster zu erstellen nimmt man
R=CreatePolygonRgn(P,5,WINDING);
z.B. so:
01.
#include <math.h> 
02.
int __fastcall Sin(int a, int R) 
03.
04.
  double W=36*3.14159265/180.0; return R*sin(W*a); 
05.
06.
 
07.
int __fastcall Cos(int a, int R) 
08.
09.
  double W=36*3.14159265/180.0; return R*cos(W*a); 
10.
11.
 
12.
HRGN __fastcall GetStarReg(int X, int Y, int R) 
13.
14.
  TPoint P[5]; 
15.
  P[0]=Point(X, Y-R); 
16.
  P[1]=Point(X-Sin(4, R), Y-Cos(4, R)); 
17.
  P[2]=Point(X-Sin(8, R), Y-Cos(8, R)); 
18.
  P[3]=Point(X-Sin(2, R), Y-Cos(2, R)); 
19.
  P[4]=Point(X-Sin(6, R), Y-Cos(6, R)); 
20.
  return CreatePolygonRgn(P, 5, WINDING); 
21.
22.
 
23.
void __fastcall TForm1::FormCreate(TObject *Sender) 
24.
25.
  int X=Width/2, Y=Height/2; 
26.
  HRGN R1, R2, R; 
27.
  R=GetStarReg(X, Y, 100); 
28.
  SetWindowRgn(Handle, R, TRUE); 
29.
}
es entsteht so was:

b3bae83de3bc1713a651249973aa92fe-star - Klicke auf das Bild, um es zu vergrößern

um 2 HRGN´s mit einander zu kombinieren benutzt man die Funktion:
CombineRgn(R, R, R1, RGN_OR);
Parameter:
1ster zeigt wohin das Ergebnis der Kombinierung kommt
2ter & 3ter HRGN´s die kombiniert werden müssen
4ter wie die beide kombiniert werden
#define RGN_AND 1
was in beiden vorhanden ist

95a7d3bfded735bf16b682fbe8224d31-4 - Klicke auf das Bild, um es zu vergrößern

#define RGN_OR 2 was in mind. einem vorh. ist

8d65dc16ffbf4761178dc4e313c178a0-5 - Klicke auf das Bild, um es zu vergrößern

#define RGN_XOR 3
was in einem, aber nicht in anderen vorh. ist

707115ab554aa6e5ad2f4686beb8d3f3-6 - Klicke auf das Bild, um es zu vergrößern

#define RGN_DIFF 4 erster minus zweiter

5bc750e00d034115195c219961f3b85a-7 - Klicke auf das Bild, um es zu vergrößern

#define RGN_COPY 5
wies ich nicht
#define RGN_MIN RGN_AND
#define RGN_MAX RGN_COPY

Viel Spaß mit bescheuerten Fenstern:

01.
#include <math.h> 
02.
int __fastcall Sin(int a, int R) 
03.
04.
  double W=36*3.14159265/180.0; return R*sin(W*a); 
05.
06.
 
07.
int __fastcall Cos(int a, int R) 
08.
09.
  double W=36*3.14159265/180.0; return R*cos(W*a); 
10.
11.
 
12.
HRGN __fastcall GetStarReg(int X, int Y, int R) 
13.
14.
  TPoint P[5]; 
15.
  P[0]=Point(X, Y-R); 
16.
  P[1]=Point(X-Sin(4, R), Y-Cos(4, R)); 
17.
  P[2]=Point(X-Sin(8, R), Y-Cos(8, R)); 
18.
  P[3]=Point(X-Sin(2, R), Y-Cos(2, R)); 
19.
  P[4]=Point(X-Sin(6, R), Y-Cos(6, R)); 
20.
  return CreatePolygonRgn(P, 5, WINDING); 
21.
22.
 
23.
void __fastcall TForm1::FormCreate(TObject *Sender) 
24.
25.
Width = 400; 
26.
Height = 400; 
27.
  int X=Width/2, Y=Height/2; 
28.
  HRGN R1, R2, R; 
29.
  R=GetStarReg(X, Y, 100); 
30.
  for(int i=1;i<10;i+=2) 
31.
32.
     R1=GetStarReg(X-Sin(i, 120), Y-Cos(i, 110), 40); 
33.
     CombineRgn(R, R, R1, RGN_OR); 
34.
35.
 
36.
  R1=GetStarReg(X, Y, 30); 
37.
  CombineRgn(R, R, R1, RGN_DIFF); 
38.
 
39.
  R1=CreateEllipticRgn(3, 3, Width-6, Height-6); 
40.
  R2=CreateEllipticRgn(20, 10, Width-20, Height-10); 
41.
  CombineRgn(R1, R1,R2, RGN_DIFF); 
42.
  CombineRgn(R, R, R1, RGN_OR); 
43.
 
44.
  SetWindowRgn(Handle, R, TRUE); 
45.
}
Mitglied: 8644
18.07.2006 um 09:49 Uhr
Moin,

man kann hier seine vorhandenen Tuto's auch editieren. Es ist nicht nötig, für jede Verbesserung ein neues zu schreiben.

Guckst du hier

Psycho
Bitte warten ..
Mitglied: 31640
18.07.2006 um 09:51 Uhr
ja aber der Beitrag is tod!!!!!!!!!
Bitte warten ..
Mitglied: thekingofqueens
18.07.2006 um 10:05 Uhr
Ist das dein Ernst mit GrÄnze?
Bitte warten ..
Mitglied: 8644
18.07.2006 um 10:29 Uhr
Ein Beitrag - speziell, wenn es sich um ein Tutorial handelt ist nicht gleich tod, wenn du nicht täglich 3 Kommentare bekommst! Gerade bei diesem Thema! Nicht jeder muß täglich mehrere andersförmige Fenster basteln!

Psycho
Bitte warten ..
Mitglied: 31640
18.07.2006 um 10:31 Uhr
>Ist das dein Ernst mit GrÄnze?
uuuuuuuuuuuuuuuuuuuuuuuuuuuuups!
Danke das du mich aufmerksam gemacht hast!!!
Bitte warten ..
Mitglied: 31640
18.07.2006 um 10:35 Uhr
Ein Beitrag - speziell, wenn es sich um ein
Tutorial handelt ist nicht gleich tod, wenn
du nicht täglich 3 Kommentare bekommst!
Gerade bei diesem Thema! Nicht jeder
muß täglich mehrere
andersförmige Fenster basteln!

Psycho
Beitrag ist tod weil die Frage ich schon beantwortet habe, also belestige ich andere nicht mit sinnlosen Fragen. Und jetzt hab ich genug Wissen darüber um ein Tutorial zu erstellen. Also weg mit Beitrag her mit Tutorial.
Bitte warten ..
Mitglied: 8644
18.07.2006 um 10:39 Uhr
OK,

war mein Fehler! Ich habe deinen ersten Beitrag zu diesem Thema schon als Tutorial gelesen - frag mich nicht warum! SORRY!!!
Wahrscheinlich weil er so anfängt: Um zu erstellen, muß man...
Noch mal SORRY!!!

Psycho
Bitte warten ..
Mitglied: 31640
19.07.2006 um 10:42 Uhr
>Psycho Dad
Nicht schlimm. Passiert mal...
Bitte warten ..
Mitglied: Raphael
19.07.2006 um 12:53 Uhr
Ich fände es noch schön wenn da steht, für welche sprache es genau ist ;)
So auf den ersten Blick c# oder c++.NET ...
Wenn ich ein Tutorial für unförmige Fenster suche, dann meist für eine bestimmte Sprache ...
Zwar ist das bei .NET nicht so ein Problem da alles recht ähnlich ist und ziemlich schnell von der einen Sprache in die andere "übersetzt" ist... aber es gibt auch Leute die .NET nicht mögen oder nicht können ;) Es gibt ja schliesslich auch andere Programmiersprachen die Windows-APIs unterstützen...
Bitte warten ..
Mitglied: 31640
19.07.2006 um 18:17 Uhr
Ich fände es noch schön wenn da
steht, für welche sprache es genau ist
;)
ups. hab´s vergessen. (dachte Programmiersprachen->c und c++ ist eindeutig c oder c++)
jetzt besser?
Bitte warten ..
Mitglied: Raphael
19.07.2006 um 20:33 Uhr
jup
danke
Bitte warten ..
Ähnliche Inhalte
Windows Netzwerk

Heimnetzgruppe erstellen und Probleme mit VMWare

Erfahrungsbericht von hanni007Windows Netzwerk

Hallo liebe Community, seit einigen Tagen saß ich nun an einem Problem und wusste auf Teufel komm raus nicht ...

C und C++

C-Sharp WPF Binding und Rechnen mit Element.With

Tipp von mayho33C und C++10 Kommentare

Hi @ All Eventuell geht es dem einen oder anderen ähnlich wie mir: WPF ist mächtig, hat aber seine ...

Windows Installation

Multiboot Festplatte mit angepassten Windows erstellen

Anleitung von askandoWindows Installation10 Kommentare

Hallo Zusammen, gewöhnlich führen ja viele Wege nach Rom. Ich habe nach einer simplen Methode gesucht relativ schnell ein ...

Windows Installation

Wie erstelle ich ein an meine Bedürfnisse angepasstes Installationsimage von Windows?

Anleitung von tomolpiWindows Installation14 Kommentare

Heute möchte ich zeigen, wie man sich eine Windows-Installation an seine Bedürfnisse anpasst. Später wird diese alle Updates, Software ...

Neue Wissensbeiträge
Windows 10

Mikrofon von Headset geht nach Update auf Windows 10 1803 nicht mehr

Tipp von Deepsys vor 1 TagWindows 10

Ich verwende ein Plantronics Headset das per USB mit dem Windows 10 PC verbunden ist. Damit kann ich auch ...

Video & Streaming

Ruckelfreies Fernsehen auf Smartphone oder Tablet - in SD oder gar HD - Eine Alternative zum Fritz DVB-C Receiver

Anleitung von power-user vor 1 TagVideo & Streaming9 Kommentare

Wer kennt das nicht: Man möchte gemütlich auf dem Balkon sitzen und vielleicht grillen und dabei das WM-Spiel gucken ...

Erkennung und -Abwehr
Trendmicro WFBS 10 ist in deutsch verfügbar!
Tipp von VGem-e vor 2 TagenErkennung und -Abwehr4 Kommentare

Servus Kollegen, downloadbar unter

Windows Update

Microsoft Patchday Juni 2018 - BSOD, obwohl noch kein Patch freigegeben

Erfahrungsbericht von diemilz vor 2 TagenWindows Update7 Kommentare

Hallo zusammen, wir hatten hier letzte Woche ein massives Problem. Alles begann damit, dass ein Mitarbeiter kurz vor Feierabend ...

Heiß diskutierte Inhalte
Windows Userverwaltung
User Überwachung
gelöst Frage von YellowcakeWindows Userverwaltung37 Kommentare

Hey ich habe von unserem neuem Datenschutzbeauftragten ein kleines Horror Paket bekommen. Ich soll wenn es möglich ist, das ...

Windows Installation
Adobe Reader noch notwendig?
gelöst Frage von EitieOSWindows Installation24 Kommentare

Muss ich mir noch die Arbeit machen und den Adobe Reader installieren und aktuell halten, wenn doch in Win10 ...

Video & Streaming
PVR-Projekt - RTSP - Streams auf NAS aufnehmen - welche Tools sind am leichtesten einzurichten ?
Frage von power-userVideo & Streaming21 Kommentare

Hallo zusammen, hier die Details zur obigen Frage: AAusgangspunkt / Grundvoraussetzungen Wir betreiben hier ein kleines Heimnetzwerk. 2 Smartphones, ...

Outlook & Mail
Nachweis des Löschens einer Email nach DSGVO in Outlook
Frage von linuxadmOutlook & Mail18 Kommentare

Hallo Forum, wie wahrscheinlich viele von Euch kämpfe ich mit der Umsetzung der DSGVO bei meinen Kunden. Konkret geht ...