 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 03.08.2007, 15:14 Titel: [GELÖST]Einem Programm zur Laufzeit einen Icon zuweisen. |
|
|
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 03.08.2007, 16:07 Titel: |
|
|
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 03.08.2007, 16:55 Titel: |
|
|
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 03.08.2007, 17:06 Titel: |
|
|
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.
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 03.08.2007, 17:15 Titel: |
|
|
Naja.
Meine Anwendung hat nur die Konsole und die Dialoge
Ich schreib' einfach mal den DIALOGEX rein :
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 03.08.2007, 19:03 Titel: |
|
|
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...
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 03.08.2007, 19:18 Titel: |
|
|
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
Das Buch "Windows-Programmierung. Das Entwicklerhandbuch zur WinAPI " habe ich noch nicht einmal
auch wenn ich Code: | .lpszClassName = Cast(zstring ptr,Login) | anstatt Code: | .lpszClassName = StrPtr("Login") | schreibe funktioniert es nicht  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 03.08.2007, 19:23 Titel: |
|
|
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
|
|
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.
|
|