Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[GELÖST]Einem Programm zur Laufzeit einen Icon zuweisen.

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.08.2007, 15:14    Titel: [GELÖST]Einem Programm zur Laufzeit einen Icon zuweisen. Antworten mit Zitat

Man nehme an, man hat ein Fenster, auch dessen HWND und einen Icon in einer Ressource.
Wie bekommt man nun das Icon aus der Ressource in die Titelleiste vom Fenster. Sprich Fenster "Iconlos" bekommt zur Laufzeit einen Icon verpasst.
Das hier habe ich da schon gefunden, aber das ist ja VB.NET spezifisch.
bzw.
Hat jemand eine Ahnung wie man einem per Ressourcen erstellten Dialog per WindowClass einen Icon zuweisen kann? Dazu habe ich nichts gefunden.
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick


Zuletzt bearbeitet von csde_rats am 03.08.2007, 19:27, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 03.08.2007, 16:07    Titel: Antworten mit Zitat

Das Icon wird normalerweise beim Erstellen des Fensters mit

Code:

Wndclass.hIcon = LoadIcon(hInsance, MAKLEINTRESSOURCE(IDI_ICON))

eingefügt.

(Sorry- ist wieder C-Sytax. Aber ich denke, es ist durchschaubar. Ich bin halt in C etwas sattelfester).
Theoretisch müßte das auch zur Laufzeit gehen, indem man auf den Parameter wc.hIcon der WndClassEx-Struktur zugreift.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.08.2007, 16:55    Titel: Antworten mit Zitat

Code:
dim as WNDCLASS   wcMeinFenster
with wcMeinFenster
    .style         =  CS_HREDRAW or CS_VREDRAW
    .lpfnWndProc   =  ProcPtr(Fenster)
    .cbClsExtra    =  0
    .cbWndExtra    =  0
    .hInstance     =  GetModuleHandle(NULL)
    .hCursor       =  LoadCursor(NULL, IDC_ARROW)
    .hIcon         =  LoadIcon(NULL, IDI_APPLICATION) '<= Das meintest du?
    .hbrBackground =  GetStockObject(WHITE_BRUSH)
    .lpszClassName =  StrPtr(ProgrammName)
    .lpszMenuName  =  NULL
end with
RegisterClass @wcMeinFenster

Das wird dann vor das CreateWindowEx geschrieben, richtig? OK.
Ein Icon soll aber keinem per CreateWindowEx() zugewiesen werden, sondern einem Dialog... wie geht denn das?
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 03.08.2007, 17:06    Titel: Antworten mit Zitat

Richtig, das meinte ich.

Wie das in einem Dialog geht, muß ich im Petzold nachschauen. Warte mal ne Weile, vielleich tschaffe ich's heute noch. happy

Generell bekommt aber natürlich jeder Dialog und jedes Child-Window mit Titelleiste das Icon des Hauptfensters automatisch mit, es sei denn, man stellt im Style etwas anderes ein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.08.2007, 17:15    Titel: Antworten mit Zitat

Naja.
Meine Anwendung hat nur die Konsole und die Dialoge grinsen

Ich schreib' einfach mal den DIALOGEX rein happy:
Code:
Login DIALOGEX 6,6,330,276
CAPTION "ICiv - Login"
FONT 8,"MS Sans Serif",400,0
STYLE WS_CAPTION|WS_VISIBLE|WS_SYSMENU|WS_GROUP|DS_CENTER
BEGIN
  CONTROL "#401",IDC_IMG1,"Static",SS_BITMAP|WS_CHILD|WS_VISIBLE,26,92,274,166
  CONTROL "Username:",Login1,"Static",WS_CHILD|WS_VISIBLE,13,18,74,9
  CONTROL "Passwort:",Login2,"Static",WS_CHILD|WS_VISIBLE,13,43,77,9
  CONTROL "",Login3,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP,130,15,134,12,WS_EX_CLIENTEDGE
  CONTROL "",Login4,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_PASSWORD,130,40,134,12,WS_EX_CLIENTEDGE
  CONTROL "OK",Login5,"Button",BS_DEFPUSHBUTTON|WS_CHILD|WS_VISIBLE|WS_TABSTOP,263,64,57,19
  CONTROL "Beenden",Login6,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,6,64,57,19
END

_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 03.08.2007, 19:03    Titel: Antworten mit Zitat

Hmmm, nimms mir nicht übel- vor drei Tagen konntest Du noch kein Menü richtig erstellen, und jetzt fängst Du schon an mit moduslosen Dialogen... geschockt

Du kannst mit CreateDialog() einen kompletten moduslosen Dialog ohne ein Parentfenster erstellen. Allerdings mußt Du dann trotzdem die WndClass-Struktur ausfüllen (und gibst darin bei hIcon das Icon an). Als Klassennamen setzt Du den Namen des Dialogs ein (aus dem Ressourcen-Script). Anstatt CreateWindow rufst Du dann CreateDialog auf.
Das Icon nachträglich ändern geht mit
Code:

SetClassLong(hWnd, GCL_HICON, LoadIcon(hInstance, MAKEINTRESSOURCE(IDI_NEXTICON)))

Genaueres solltest Du selbst im Petzold nachlesen.

Eine andere Möglichkeit steht hier:
http://www.winapi.net/index.php?inhalt=s8


Zuletzt bearbeitet von Elektronix am 03.08.2007, 19:21, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.08.2007, 19:18    Titel: Antworten mit Zitat

grmpfl.
Code:
dim as WNDCLASS   wcMeinFenster
   with wcMeinFenster
       .style         =  CS_HREDRAW or CS_VREDRAW
       .lpfnWndProc   =  ProcPtr(LoginProc)
       .cbClsExtra    =  0
       .cbWndExtra    =  0
       .hInstance     =  GetModuleHandle(NULL)
       .hCursor       =  LoadCursor(NULL, IDC_ARROW)
       .hIcon         =  ExtractIcon(hInstance, "C:\WINDOWS\system32\SHELL32.dll",100) 'LoadIcon(NULL, IDI_APPLICATION)
       .hbrBackground =  GetStockObject(WHITE_BRUSH)
       .lpszClassName =  StrPtr("Login")
       .lpszMenuName  =  NULL
   end with
   RegisterClass @wcMeinFenster


   DialogBoxParam(GetModuleHandle(NULL), Cast(zstring ptr,Login), NULL, @LoginProc, NULL)

Der Dialog hat den ganz Normalen IDI_APPLICATION-Icon traurig

Das Buch "Windows-Programmierung. Das Entwicklerhandbuch zur WinAPI " habe ich noch nicht einmal grinsen

auch wenn ich
Code:
.lpszClassName =  Cast(zstring ptr,Login)
anstatt
Code:
.lpszClassName = StrPtr("Login")
schreibe funktioniert es nicht traurig
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 03.08.2007, 19:23    Titel: Antworten mit Zitat

Possting hat sich überkreuzt. Ich habe oben in meinem letzten Posting noch etwas geändert. Mal da nachschauen.
Mit dem ClassName-Parameter hat es nichts zu tun!

Übrigens: Den Petzold lege ich Dir wärmstens ans Herz, wenn Du Dich intensiver mit der WinAPI herumschlagen willst. Ist sozusagen ein Standardwerk für Windows-Progger.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.08.2007, 19:26    Titel: Antworten mit Zitat

JAAAAAAAAA
DU BIST EIN GOTT!!!! durchgeknallt durchgeknallt happy happy grinsen grinsen grinsen ES FUNKTIONIERT
Yahooo!!!! Yahooo!!!! vor Freude klatschen vor Freude klatschen
DANKE!!!!

Das Buch werde ich mir dann wohl demnächst zulegen...
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz