 |
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 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 27.06.2012, 21:23 Titel: Icons in der Taskleiste und links in der Titelleiste |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 27.06.2012, 23:03 Titel: |
|
|
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 |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 28.06.2012, 00:31 Titel: |
|
|
In diesem Link wird beschreiben wie man icons über rc script einbinden kann. |
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 28.06.2012, 00:55 Titel: |
|
|
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 28.06.2012, 17:47 Titel: |
|
|
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 28.06.2012, 20:42 Titel: |
|
|
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 |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 28.06.2012, 21:02 Titel: |
|
|
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 29.06.2012, 13:31 Titel: |
|
|
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 |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 29.06.2012, 18:11 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|