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:

Icons in der Taskleiste und links in der Titelleiste

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



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 27.06.2012, 21:23    Titel: Icons in der Taskleiste und links in der Titelleiste Antworten mit Zitat

Es gibt ja die Möglichkeit Icons in der Taskleiste und links in der Titelleiste anzeigen zu lassen.

Ích habe nun die Möglichkeit mit folgendem Quellcode:

Code:
#include "windows.bi"
const ProgrammName = "TEST"

declare function WndProc(ByVal hWnd as HWND, byval message as UINTEGER,_
    byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
declare function SubProc(byval hWnd as HWND, byval message as UINTEGER,_
    byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT

dim as WNDCLASS   wndcls
with wndcls
    .style         =  CS_HREDRAW Or CS_VREDRAW
    .lpfnWndProc   =  ProcPtr(WndProc)
    .cbClsExtra    =  0
    .cbWndExtra    =  0
    .hInstance     =  GetModuleHandle(NULL)
    .hCursor       =  LoadCursor(NULL, IDC_ARROW)
    .hIcon         =  LoadIcon(NULL, IDI_APPLICATION)
    .hbrBackground =  GetSysColorBrush(COLOR_WINDOW)
    .lpszClassName =  StrPtr(ProgrammName)
    .lpszMenuName  =  NULL
end with
RegisterClass @wndcls

dim as HWND   hWnd = CreateWindow(_
    ProgrammName, ProgrammName, WS_OVERLAPPED Or WS_SYSMENU,_
    CW_USEDEFAULT, CW_USEDEFAULT, 600, 600,_
    NULL, NULL, GetModuleHandle(NULL), NULL)

ShowWindow   hWnd, SW_NORMAL
UpdateWindow hWnd

dim as MSG msg
DO while getmessage(@msg, NULL, 0, 0) <> 0
    TranslateMessage @msg
    DispatchMessage  @msg
LOOP
end msg.wParam

function WndProc(byval hWnd as HWND, byval message as UINTEGER,_
    byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT

...

end function


Aber ich habe bei dem Code fast keine Möglichkeit im Hauptprogramm mein Programm ablaufen zu lassen. Lande immer letztendlich in der DO - LOOP Schleife. Ich müsste schon in der Function meinen Quellcode reinschreiben, was für mich sehr umständlich ist.
Gibt es andere Möglichkeiten um das Icon anzeigen zu lassen? Ich glaube es gab da noch 1 bis 2 Möglichkeiten. Habe sie aber wieder vergessen.

Ich verwende bei den Programmen SCREENRES bzw. auch Screen 12 um das Fenster anzeigen zu lassen.

Irgendwie muss das doch gehen?

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 27.06.2012, 23:03    Titel: Antworten mit Zitat

Letztendlich würde man so etwas wohl über Threads machen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 28.06.2012, 00:31    Titel: Antworten mit Zitat

In diesem Link wird beschreiben wie man icons über rc script einbinden kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 28.06.2012, 00:55    Titel: Antworten mit Zitat

XOR hat Folgendes geschrieben:
In diesem Link wird beschreiben wie man icons über rc script einbinden kann.


Die Exedatei hat ja bereits ein Icon. Nur wird das Icon nicht in der Titelleiste (oben links beim Programm) bzw. in der Taskleiste angezeigt.

Geht das wirklich mit dem Threads? Das muss ich mir nochmal genauer anschauen. Aber meine Zeit ist begrenzt! Habe nicht den ganzen Tag Zeit.

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 28.06.2012, 09:12    Titel: Antworten mit Zitat

Hi,
das könnte helfen:
http://www.freebasic-portal.de/code-beispiele/windows-gui/icon-in-der-titelleiste-190.html
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 28.06.2012, 17:47    Titel: Antworten mit Zitat

Code:
#Include Once "windows.bi"

Screen 13

WindowTitle " <- standard.ico"
Print "push button ... "
Sleep
Cls

'------ Icon in der Titelleiste ------
Dim whandle As Integer
ScreenControl 2, whandle '2 = fb.GET_WINDOW_HANDLE
SendMessage (Cast (HWND, whandle), WM_SETICON, ICON_SMALL, _
Cast( Integer, LoadImage ( GetModuleHandle (Null), _
"MY_ICON", IMAGE_ICON, 0, 0, LR_COPYFROMRESOURCE  ) ) )

WindowTitle " <- fblogo.ico"
Sleep


Bei oben genannten Code funktioniert das nicht, wenn ich mit DEPRECATED GUI bzw mit dem Screenbefehl compiliere. Ohne den Screenbefehl bzw. Screenres funktioniert es ohne Probleme. Leider compiliere ich aber das Programm mit DEPRECATED GUI und mit dem Screenbefehl. Extern einbetten will ich das Icon auch nicht gerade.

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 28.06.2012, 20:42    Titel: Antworten mit Zitat

Mit
Code:
fbc -lang deprecated -s gui demo_3.rc "icon1.bas"

habe ich keine Schwierigkeiten, es funktioniert alles!
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 28.06.2012, 21:02    Titel: Antworten mit Zitat

Bei mir funktioniert das nicht.
Es wird nicht das Icon angezeigt das ich in der .rc Datei angegeben hanbe.
Es wird das übliche angezeigt.
Werde das ganze mal auf einem anderen Rechner probieren.

Edit: Weder auf Win 7 noch auf Win Vista funktioniert es.
Edit2: Jetzt habe ich es auf jedenfall schon mal hinbekommen!

Edit3:

Damit funktioniert es nicht:

Code:
#define ICON1 100
#define ICON2 101
#define TEST 1

ICON1 ICON DISCARDABLE "TEST2.ico"
ICON2 ICON DISCARDABLE "TEST.ico"

Stop VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEOS 0x00010001
FILETYPE 0x00000001
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "040704E4"
    BEGIN
      VALUE "FileDescription", "Testprogramm\0"
      VALUE "LegalCopyright", "Copyright by Geschmacksvorrichtung\0"
      VALUE "ProductName", "TEST\0"
      VALUE "Publisher", "ALWIM\0"
      VALUE "Comments", "Kein Kommentar\0"
      VALUE "FileVersion", "1.00\0"
      VALUE "ProductVersion", "1.00\0"
      VALUE "InternalName", "TEST\0"
      VALUE "OriginalFilename", "TEST.exe\0"
    END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x0407, 0x04E4
  END
END

Da müssen sicherlich 2 Werte (Namen) gleich sein. Einer in der rc. Datei mit einem in der .bas Datei.

Edit4: Es wird SLEEP benötigt! Schon merkwürdig! Aber es funktioniert jetzt!!!

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 29.06.2012, 13:31    Titel: Antworten mit Zitat

1. ändere Stop -> TEST. "Stop" ist nicht definiert!
Code:
#define MY_ICON 101
MY_ICON ICON fblogo.ico

#define TEST 1
TEST VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEOS 0x00010001
...

2. In der Ladefunktion
statt "MY_ICON" -> MAKEINTRESOURCE(101)
Code:
...
'------ Icon in der Titelleiste ------
Dim whandle As Integer
ScreenControl 2, whandle '2 = fb.GET_WINDOW_HANDLE
SendMessage (Cast (HWND, whandle), WM_SETICON, ICON_SMALL, _
Cast( Integer, LoadImage ( GetModuleHandle (Null), _
MAKEINTRESOURCE(101), IMAGE_ICON, 0, 0, LR_COPYFROMRESOURCE  ) ) )
...
so funktioniert er bei mir (Win7).
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 29.06.2012, 18:11    Titel: Antworten mit Zitat

volta hat Folgendes geschrieben:
1. ändere Stop -> TEST. "Stop" ist nicht definiert!
Code:
#define MY_ICON 101
MY_ICON ICON fblogo.ico

#define TEST 1
TEST VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEOS 0x00010001
...

2. In der Ladefunktion
statt "MY_ICON" -> MAKEINTRESOURCE(101)
Code:
...
'------ Icon in der Titelleiste ------
Dim whandle As Integer
ScreenControl 2, whandle '2 = fb.GET_WINDOW_HANDLE
SendMessage (Cast (HWND, whandle), WM_SETICON, ICON_SMALL, _
Cast( Integer, LoadImage ( GetModuleHandle (Null), _
MAKEINTRESOURCE(101), IMAGE_ICON, 0, 0, LR_COPYFROMRESOURCE  ) ) )
...
so funktioniert er bei mir (Win7).


Danke für den Hinweiß!
Mittlerweile hab ich es selber hinbekommen! Siehe obigen Post!
Funktioniert bestens!!! Habe am Code nichts ändern müssen, es fehlte nur ein Sleep!

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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