Bonjour,
débutant en c++ j'ai pour projet de réaliser un launcher pour une application tierce.

Je souhaiterais que cette application soit sans bordure avec simplement une image de fond png en partie transparente.
J'ai trouvé comment afficher mon png avec GDI+ et retirer les bordures et menus de ma fenêtre avec le flag WS_POPUP mais du coup plus rien ne s'affiche. L'application et pourtant bien en cours d’exécution puisque visible dans le gestionnaire de tâches.

Ci-joint le code de mon application :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <windows.h>
#include <objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib,"Gdiplus.lib")
 
VOID OnPaint(HDC hdc)
{
   Graphics graphics(hdc);
	Image image(L"launcher.png");
graphics.DrawImage(&image, 0, 0);
}
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, INT iCmdShow)
{
   HWND                hWnd;
   MSG                 msg;
   WNDCLASS            wndClass;
   GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR           gdiplusToken;
 
   // Initialize GDI+.
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
 
   wndClass.style          = CS_HREDRAW | CS_VREDRAW;
   wndClass.lpfnWndProc    = WndProc;
   wndClass.cbClsExtra     = 0;
   wndClass.cbWndExtra     = 0;
   wndClass.hInstance      = hInstance;
   wndClass.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
   wndClass.hCursor        = LoadCursor(NULL, IDC_ARROW);
   wndClass.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
   wndClass.lpszMenuName   = NULL;
   wndClass.lpszClassName  = TEXT("BFTRLauncher");
 
   RegisterClass(&wndClass);
 
   hWnd = CreateWindow(
      TEXT("BFTRLauncher"),   // window class name
      TEXT("BFTRLauncher"),  // window caption
      WS_POPUP,      // window style WS_OVERLAPPEDWINDOW
      0,            // initial x position CW_USEDEFAULT
      0,            // initial y position CW_USEDEFAULT
      800,            // initial x size CW_USEDEFAULT
      600,            // initial y size CW_USEDEFAULT
      NULL,                     // parent window handle
      NULL,                     // window menu handle
      hInstance,                // program instance handle
      NULL);                    // creation parameters
 
   ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);
   HRGN hrgn = CreateRectRgn( 0, 0, 800, 600 );
 
SetWindowRgn( hWnd, hrgn, TRUE );
 
   while(GetMessage(&msg, NULL, 0, 0))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
 
   GdiplusShutdown(gdiplusToken);
   return msg.wParam;
}  // WinMain
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, 
   WPARAM wParam, LPARAM lParam)
{
   HDC          hdc;
   PAINTSTRUCT  ps;
 
   switch(message)
   {
   case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);
      OnPaint(hdc);
      EndPaint(hWnd, &ps);
      return 0;
   case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
   default:
      return DefWindowProc(hWnd, message, wParam, lParam);
   }
} // WndProc
J'utilise VC++ 2010 Express. De ce que je comprend c'est le flag WS_POPUP qui enlève les bordures & co est-ce qu'il y en aurait un à ajouter (ou le remplacer) pour que la fonction qui affiche l'image apparaisse tout de même ?

J'espère poster dans la bonne section, d'avance merci et désolé si ma demande est hors charte ou section.