LoadBitmap & DwmSetIconicLivePreviewBitmap function
-
Hallo

Ich möchte eine Funktion benutzen:
https://msdn.microsoft.com/en-us/library/dd389410(v=vs.85).aspxSo dafür brauche erstmal ein Bild, und das lade ich mit LoadBitmap
Ziel soll es sein das Vorschau Bild unten in der Taskbar zu verändren.
Leider funktioniert es nicht. Hier mein Code:void render() { static HBITMAP bmpSource = NULL; bmpSource = (HBITMAP)LoadImage(NULL, "c:\\test.jpg", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); HWND newhwnd2 = FindWindow(NULL, "test"); HRESULT WINAPI DwmSetIconicLivePreviewBitmap( HWND newhwnd2, HBITMAP IMGSource, DWORD dwSITFlags ); }
-
Du rufst die Funktion ja auch nicht auf.
-
Mechanics schrieb:
Du rufst die Funktion ja auch nicht auf.
Ich calle später noch mit render(); Sollte reichen oder? In der Funktion steht noch mehr das wird aber ausgeführt ;3
-
paradoxie schrieb:
Mechanics schrieb:
Du rufst die Funktion ja auch nicht auf.
Ich calle später noch mit render(); Sollte reichen oder? In der Funktion steht noch mehr das wird aber ausgeführt ;3
Dein Code am Ende des Beispiels ist eine Funktionsdeklaration, kein Aufruf...
-
Nathan schrieb:
paradoxie schrieb:
Mechanics schrieb:
Du rufst die Funktion ja auch nicht auf.
Ich calle später noch mit render(); Sollte reichen oder? In der Funktion steht noch mehr das wird aber ausgeführt ;3
Dein Code am Ende des Beispiels ist eine Funktionsdeklaration, kein Aufruf...
Okay

HRESULT WINAPI DwmSetIconicLivePreviewBitmap(HWND hwnd, HBITMAP hbmp, DWORD dwSITFlags); DwmSetIconicLivePreviewBitmap(newhwnd2, bmpSource, 0);Also nochmal oben deklariert, und dann der Aufruf. Klappt auch nicht LNK2019 und
LNK1120 - Nicht aufgelöste Externe.
-
Und jetzt schau nochmal in die Doku, der erste Link, den du selber gepostet hast.
-
Mechanics schrieb:
Und jetzt schau nochmal in die Doku, der erste Link, den du selber gepostet hast.
Hilft mir nicht wirklich weiter
-
Du musst die Funktion nicht deklarieren, du musst bloss
<Dwmapi.h>inkludieren.
Und dann gegenDwmapi.liblinken.
Und das geht so:#include <Dwmapi.h> #pragma comment(lib, "Dwmapi.lib") // ... void render() { // ... HRESULT hr = DwmSetIconicLivePreviewBitmap(newhwnd2, IMGSource, dwSITFlags); if (FAILED(hr)) { // DwmSetIconicLivePreviewBitmap ist fehlgeschlagen // TODO: Fehler behandeln } }
-
Hey danke dafür !

Ich hab ein neues Projekt erstellt nur um die Funktion zu testen.
// ConsoleApplication2.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "stdafx.h" #include <windows.h> #include <iostream> #include <Dwmapi.h> #include <TlHelp32.h> #include <string> #pragma comment(lib, "Dwmapi.lib") using namespace std; int main() { HWND newhwnd = FindWindow(NULL, "test"); static HBITMAP bmpSource = NULL; bmpSource = (HBITMAP)LoadImage(NULL, "c:\\test2.bmp", IMAGE_BITMAP, 64, 64, LR_LOADFROMFILE); HRESULT hr = DwmSetIconicLivePreviewBitmap(newhwnd, bmpSource, NULL, DWM_SIT_DISPLAYFRAME); if (FAILED(hr)) { cout << "Failed " << bmpSource << endl; cin.get(); } }Leider wird immer Failed ausgegeben, auch wenn ich andere Programme benutze als mein test programm.

-
Ich bezweifle mal, dass eine Konsolenanwendug eine Lifepreview erzeugen kann.
-
Und du überprüfst auch keine Rückgabewerte, z.B. of FindWindow etwas sinnvolles zurückgegeben hat.