probleme mit den ressourcen
-
hallo leute,
hoffe ich könnt mir weiterhelfen
1.frage
wie kann ich in den ressourcen den titel so bestimmen,
dass der style 'ws_popup' noch funktioniert?#include <windows.h> #include "resource.h" 1 DIALOGEX 0, 0, 200, 255 STYLE DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_VISIBLE EXSTYLE WS_EX_TOPMOST CAPTION "TITEL" LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL FONT 7, "MS SANS SERIF" BEGIN ... ENDmit 'caption "titel"' konnt dann wieder oben die leiste mit dem namen.
2. frage
wie bringe ich bilder in die ressourcen und wie kann ich diese dann benutzen?3. frage
wie bringe ich einen dialog dazu nicht in der taskleiste zu erscheinen4.frage
wie krieg ich das handle eines in den ressourcen erzeugten controls
(um den text später zu ändern zbvielen dank schonmal :), phen
-
4. antwort
GetDlgItem(handle des dialogs, id des controls)
-
Phenex schrieb:
hallo leute,
hoffe ich könnt mir weiterhelfen
3. frage
wie bringe ich einen dialog dazu nicht in der taskleiste zu erscheinenIn der Taskleiste werden nur Programme angezeigt.
Eigentlich ist ein Dialog Teil eines Programms und erscheint daher nicht in der Taskleiste. Außer bei rein dialogbasierten Anwendungen (wobei auch nur das Programm angezeigt wird, nicht die einzelnen Dialoge).4.frage
wie krieg ich das handle eines in den ressourcen erzeugten controls
(um den text später zu ändern zbvielen dank schonmal :), phen
hDlg = CreateDialog(...)(nicht modal) oder DialogBox(...)(modal).
Die einzelnen Controls im Dialog haben keine Handles, sondern IDs.
-
nun wie krieg ich dann mein programm^^ dazu das es nicht in der
tastkleiste angezeigt wird
weil iwas is da ja
-
Elektronix schrieb:
Phenex schrieb:
hallo leute,
hoffe ich könnt mir weiterhelfen
3. frage
wie bringe ich einen dialog dazu nicht in der taskleiste zu erscheinenIn der Taskleiste werden nur Programme angezeigt.
Eigentlich ist ein Dialog Teil eines Programms und erscheint daher nicht in der Taskleiste. Außer bei rein dialogbasierten Anwendungen (wobei auch nur das Programm angezeigt wird, nicht die einzelnen Dialoge).Nein das stimmt (ledier
) nit...
Ob ein Fenster (!) in der Taskleiste angezeigt wird, oder nicht hängt nicht vom 'Programm' ab, sondern von den Fenster-Styles bzw von anderen (eher unüblichen) Manipulationen. Ein Dialog erscheint also in der Regel (wenn wir mal von den Standard-Styles ausgehen, everthing can change
) IMMER in der Taskleiste.
Um zu deiner Frage und deren Antwort zu kommen:
Du kannst beispielsweise CreateWindowEx und das Ex-Style WS_EX_TOOLWINDOW nutzen (oder das Flag im Resourcen-Script setzen). Dann erscheint nix inner Taskleiste oder du nimmst folgenden Code:// ==> TaskbarTools.h //***************************************************************************** //* //* //* TaskbarTools //* //* //***************************************************************************** // // Funktionen für die Steuerung der Taskbar // // BOOL TaskbarHide(HWND Hwnd) Taste in der Taskbar verstecken // BOOL TaskbarShow(HWND Hwnd) Taste in der Taskbar anzeigen // // Nachrichten Verarbeitung: // // ON_MESSAGE(TB_NOTIFYICON, OnProc) // // void OnProc(UINT wParam,UINT lParam) // lParam ist die ID // { // switch(lParam) // { // case WM_LBUTTONDOWN: // case WM_RBUTTONDOWN: // } // } #ifndef __TASKBARTOOLS_H__ #define __TASKBARTOOLS_H__ #define TB_NOTIFYICON 0x2F19 BOOL TaskbarInit(); void __cdecl TaskbarExit(void); BOOL TaskbarHide(HWND Hwnd); BOOL TaskbarShow(HWND Hwnd); #endifund die Quellcode-Datei:
// ==> TaskbarTools.cpp //***************************************************************************** //* //* //* TaskbarTools //* //* //***************************************************************************** // // Funktionen für die Steuerung der Taskbar // // BOOL TaskbarHide(HWND Hwnd) Taste in der Taskbar verstecken // BOOL TaskbarShow(HWND Hwnd) Taste in der Taskbar anzeigen // #include <windows.h> #include <shellapi.h> #include <shlwapi.h> #include <shlobj.h> #include <string.h> #include "TaskbarTools.h" typedef struct ITaskbarListVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( VOID __RPC_FAR * This,REFIID riid,void __RPC_FAR *__RPC_FAR *ppvObject); ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( VOID __RPC_FAR * This); ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( VOID __RPC_FAR * This); HRESULT ( STDMETHODCALLTYPE __RPC_FAR *HrInit )( VOID __RPC_FAR * This); HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddTab )( VOID __RPC_FAR * This, HWND hwnd); HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteTab )( VOID __RPC_FAR * This, HWND hwnd); HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ActivateTab )( VOID __RPC_FAR * This, HWND hwnd); HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetActiveAlt )( VOID __RPC_FAR * This, HWND hwnd); END_INTERFACE } ITaskbarListVtbl; typedef struct { ITaskbarListVtbl *lpVtbl; }ITaskbarList_; static ITaskbarList_ *list=0; static int exit_add=0; //***************************************************************************** //* //* TaskbarInit //* //***************************************************************************** // Initialisiert die Taskbar Routienen // Ergibt TRUE wenn erfolgreich BOOL TaskbarInit() { HRESULT hr; if(list)return TRUE; hr=CoInitialize( NULL ); if(!SUCCEEDED(hr))return FALSE; hr=CoCreateInstance(CLSID_TaskbarList,NULL,CLSCTX_INPROC_SERVER,IID_ITaskbarList,(void**)&list); if(!SUCCEEDED(hr))return FALSE; return TRUE; } //***************************************************************************** //* //* TaskbarExit //* //***************************************************************************** // Deinitialisiert die Taskbar Routienen void __cdecl TaskbarExit(void ) { if(!list)return; CoUninitialize(); list=0; } //***************************************************************************** //* //* TaskbarHide //* //***************************************************************************** // Versteckt die Taskleiste die zu Hwnd gehört // Ergibt TRUE wenn erfolgreich BOOL TaskbarHide(HWND Hwnd) { HRESULT hr; if(!list) { if(!TaskbarInit())return FALSE; if(!exit_add){atexit(TaskbarExit);exit_add=1;} } hr=list->lpVtbl->DeleteTab(list,Hwnd); if(!SUCCEEDED(hr))return FALSE; return TRUE; } //***************************************************************************** //* //* TaskbarShow //* //***************************************************************************** // Erstellt eine Taste in der Taskleiste die zu Hwnd gehört // Ergibt TRUE wenn erfolgreich BOOL TaskbarShow(HWND Hwnd) { HRESULT hr; if(!list) { if(!TaskbarInit())return FALSE; if(!exit_add){atexit(TaskbarExit);exit_add=1;} } hr=list->lpVtbl->AddTab(list,Hwnd); hr=list->lpVtbl->ActivateTab(list,Hwnd); if(!SUCCEEDED(hr))return FALSE; return TRUE; }Elektronix schrieb:
4.frage
wie krieg ich das handle eines in den ressourcen erzeugten controls
(um den text später zu ändern zbvielen dank schonmal :), phen
hDlg = CreateDialog(...)(nicht modal) oder DialogBox(...)(modal).
Die einzelnen Controls im Dialog haben keine Handles, sondern IDs.
Stimmt auch nit janz...:
Doch JEDES Fenster hat einen Handle...du bekommst den Handle über die ID und den Handle des Parent-Fensters mit der
Funktion: GetDlgItem(hParent, uiID);EDIT 1: Vertipper
EDIT 2: Vertipper
EDIT 3: Quellcode nachgereicht
.
-
Dann zu deinen weiteren Fragen:
Phenex schrieb:
1.frage
wie kann ich in den ressourcen den titel so bestimmen,
dass der style 'ws_popup' noch funktioniert?#include <windows.h> #include "resource.h" 1 DIALOGEX 0, 0, 200, 255 STYLE DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_VISIBLE EXSTYLE WS_EX_TOPMOST CAPTION "TITEL" LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL FONT 7, "MS SANS SERIF" BEGIN ... ENDmit 'caption "titel"' konnt dann wieder oben die leiste mit dem namen.
Ähm, was willst du denn erreichen ?
Phenex schrieb:
2. frage
wie bringe ich bilder in die ressourcen und wie kann ich diese dann benutzen?Hm ich weiß jez nicht welchen Compiler du verwendest...Laden kannst du Resourcen-Bitmaps mit LoadBitmap(...).
Phenex schrieb:
3. frage
wie bringe ich einen dialog dazu nicht in der taskleiste zu erscheinensiehe oben
.Phenex schrieb:
4.frage
wie krieg ich das handle eines in den ressourcen erzeugten controls
(um den text später zu ändern zbsiehe oben
.Cya
-
danke schon mal für die hilfreichen antworten!!!!
ich möchte erreichen, das das fenster zwar noch einen namen hat, aber oben keine leiste. also das zb in der taskleiste unten noch ein name steht.
-
mein compiler is übrigends mingw in code::blocks
-
Hast ja Recht, hätte ich besser wissen müssen.

-
ich hab jez rausgekriegt, wieso ich immer diese leiste oben angezeigt kriege.
minGW fügt automatisch WS_CAPTION dazu wenn man CAPTION "..." angitb,
kann man das iwie ausstellen??
-
Phen.ex schrieb:
kann man das iwie ausstellen??
Ich wüsste nur ne indirekte Variante:
if(GetWindowLongPtr(hWnd, GWL_STYLE) & WS_CAPTION) // Zur Prüfung, ob das Flag auch wirklich enthalten ist SetWindowLongPtr(hWnd, GetWindowLongPtr(hWnd, GWL_STYLE) & WS_CAPTION);
-
Phen.ex schrieb:
ich hab jez rausgekriegt, wieso ich immer diese leiste oben angezeigt kriege.
minGW fügt automatisch WS_CAPTION dazu wenn man CAPTION "..." angitb,
kann man das iwie ausstellen??Im Notfall kannst Du die .rc-Datei mit einem Texteditor (auch in der IDE) bearbeiten und WS_POPUP oder WS_CAPTION selbst einfügen.