if you know the name of that application window GroupAdd, ontop, Sticky Notes you can replace sticky note by any application, exe which enables you to share it with your other friends too: #SingleInstance Force ahk file, you can also see option of Compiling. ahk if you already had installed autohotkey on your computer). ahk file (you can copy these codes to a simple notepad and then change. Below scripts are an instance of making sticky notes always on top when you execute it inside a. autohotkey is a powerful free scripting language for automation in windows that you can download from here. I had the same problem and found a solution via using "autohotkey". Also force the z order to ensure the window is always on bottom Set the flags to prevent this and "survive" to the desktop toggle Show desktop (Windows + D) results in the window moved to -32000, -32000 and size changed Indeed, calling SetWindowPos to force it in the WM_SIZE event when dragging the window over, as I was doing previously, causes some flickering on the window when resizing it, whereas no flickering occurs when setting directly the hwndInsertAfter property of the WINDOWPOS structure in WM_WINDOWPOSCHANGING. So as a final result, to achieve the wanted behaviour (i.e always behind every other window but always in front of the desktop), the only needed code to add to the doc's sample is the following, placed in the window procedure WindowProc's switch statement :ĮDIT : the best place to force the Z order with HWND_BOTTOM thus ensuring the window is always on bottom is also in the WM_WINDOWPOSCHANGING event. To prevent this movement, just set the flags SWP_NOMOVE and SWP_NOSIZE on the WINDOWPOS structure passed in the lParam Also noticed the same issue when using the ex style WS_EX_TOOLWINDOW (as this one gets rid of the minimize box, even if you set the style flag WS_MINIMIZEBOX).ĭidn't find a solution for that case, so I'm sticking to an overlapped window. Thus, no -32 000 coordinates detection in that case. NOTE : a window without the style WS_MINIMIZEBOX seems not receiving WINDOWPOSCHANGING event when hitting Windows + D. Disable Minimize, Maximize, Close buttons in Win32 I tried those to "intercept" the Show Desktop event but it seems this event doesn't get fired with the Show Desktop action.Īs pointed out, when hitting Windows + D or the Show Desktop button, the event WM_WINDOWPOSCHANGING gets fired, and the window gets moved to -32 000, -32 000 (its size also gets changed).Make aplication always on Bottom (pinned to desktop, behind all other apps) in C++/WinAPI.However, my app isn't visible at all anymore with this, even though the FindWindow didn't return NULL but an actual handle. HWND desktop = FindWindow(L"ProgMan", L"Program Manager") Window “on desktop” : Note on this one, I tried the trick with SetParent like this in the wWinMain.I checked out those answers but couldn't figure out how to achieve what I want. Not ideal though, as I'd really want my app to always remain in front of the desktop and "survive" to the Show Desktop action. I could do this using this time the event WM_SIZE and calling ShowWindow then SetWindowPos, still in the WindowProc A not-satisfying-enough-but-still-something I managed to do is to bring back my window in front of the desktop when clicking on any other window after hitting Windows + D (this mostly makes sense with multiple monitors, as opening a random app on the first one for example, will toggle back my own app in front of the desktop on another screen).As I often use this shortcut myself, I'd like my window to stay over the desktop no matter what. The problem : my window stays in front of the desktop, except when I click on the "Show Desktop" button in the taskbar (or hit the Windows + D shortcut).SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE) I managed to keep my window on bottom of every other app and in front of the desktop by calling SetWindowPos in the window procedure ( WindowProc), when handling the event WM_SETFOCUS (I first tried with the event WM_WINDOWPOSCHANGING as suggested in this answer but this resulted in an annoying flickering when dragging the window).I started with the sample code from the Get Started with Win32 and C++ docs to have the most basic Win32 minimal window setup. The behaviour I'm aiming for would be similar to Stardock Fences ("kind of" because I'm not going to store any desktop icon in there, but you hopefully get the idea) Really a personal project there, just to fight my bad memory and have my tasks/notes always visible on the desktop so I couldn't miss them when starting the computer & so on. My goal right now is to create a basic "sticky note" app that would be pinned / glued to the desktop, i.e always in front of the desktop but always behind of any other application. I'm working on a basic desktop app in C++ / Win32.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |