Einzelne Steuerelemente auf Desktop
-
Denkste, ich setz mich jetzt daran für dich?! Ich hab auch noch andere Sachens zu tun!
-
-
Na gut. Aber nur für dich.
#include <windows.h> //--------------------------------------------------------------------------- // Global Variables HWND g_hEdit; HWND g_hParent; FARPROC g_OldWndProc; //--------------------------------------------------------------------------- // Function Prototypes HWND FindListView32(); LRESULT CALLBACK NewWndProc(HWND, UINT, WPARAM, LPARAM); //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int) { g_hParent = FindListView32(); if(!g_hParent) return -1; // Create Edit LONG style = WS_VISIBLE|WS_CHILD; LONG ex_style = WS_EX_CLIENTEDGE; g_hEdit = CreateWindowEx(ex_style, "EDIT", NULL, style, 100, 400, 180, 21, g_hParent, NULL, hInstance, NULL); SendMessage(g_hEdit, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0)); // Subclass Edit g_OldWndProc = (FARPROC)GetWindowLong(g_hEdit, GWL_WNDPROC); SetWindowLong(g_hEdit, GWL_WNDPROC, (LONG)NewWndProc); // Message Loop MSG msg; while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } //--------------------------------------------------------------------------- LRESULT CALLBACK NewWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { switch(iMsg) { case WM_KEYUP: if((int)wParam == VK_RETURN) SendMessage(g_hEdit, WM_CLOSE, 0, 0); break; case WM_DESTROY: PostQuitMessage(0); break; } return CallWindowProc(g_OldWndProc, hwnd, iMsg, wParam, lParam); } //--------------------------------------------------------------------------- HWND FindListView32() { HWND hwnd = FindWindow(NULL, "Program Manager"); if(hwnd) { hwnd = FindWindowEx(hwnd, NULL, "SHELLDLL_DefView", ""); if(hwnd) hwnd = FindWindowEx(hwnd, NULL, "SysListView32", ""); } return hwnd; }
Müsste man sicher noch was dran rummodeln. Aber so in der Art halt.
[ Dieser Beitrag wurde am 09.01.2003 um 01:37 Uhr von WebFritzi editiert. ]
-
Ich find meins sogar besser als MagiCs, da' erstens besser aussieht (;)) und man zweitens auch was reinschreiben kann. Ein dritter Punkt ist, dass das Edit nich vor allen Fenstern im Vordergrund steht. Und: Es hat keinen Button in der Taskleiste.
-
Deine Idee ist auch besser..., danke
-
Hallo,
nochmal dieser lange Thread aber eine Frage noch, insbesondere an WebFritzi.
Ich kann nach der Sub-Classing-Methode ja auch einen PUSHBUTTON auf das Desktop zaubern, nur weiss ich nicht wie und wo ich die WM_COMMAND-Messages von diesem abfange. Vielleicht mit PeekMessage ? Ick wees nich mer weider...
-
@WebFritzi: Bei mir kann man auch was reinschreiben und ein Button in der Taskleiste erscheint auch nicht!
cya
-
Original erstellt von MagiC Creator:
@WebFritzi: Bei mir kann man auch was reinschreiben und ein Button in der Taskleiste erscheint auch nicht!Doch, bei mir schon. Und reinschreiben kann man auch erst, wenn man diesen Button einmal angeklickt hat. Noch ein Nachteil ist, dass sich das Ding bei Aktivierung über alles rübermalt. Hab Win98 - nur zur Info. Kann sein, dass es auf XP anders ist.
-
@BigFusel: Die WM_COMMAND wird doch an das Parent versendet. Die Message kannst du also nicht empfangen, außer du schreibst dir einen Hook, aber dann wäre das SubClassen eh fürn A-rsch. Reagiere lieber auf WM_LBUTTONUP und teste, ob sich der MouseCursor auch über dem Button befindet.
-
mmmmhh, muss ich ma schaun ...