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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| #include <windows.h>
#define BTN_REDIM 1
HINSTANCE hinst;
HWND hMain, hMainRedim;
bool RedimFenetre;
int x, y;
LRESULT CALLBACK MainProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
WNDCLASS MainClass;
hinst = hinstance;
MainClass.style = 0;
MainClass.lpfnWndProc = MainProc;
MainClass.cbClsExtra = 0;
MainClass.cbWndExtra = 0;
MainClass.hInstance = NULL;
MainClass.hIcon = NULL;
MainClass.hCursor = LoadCursor(NULL, IDC_ARROW);
MainClass.hbrBackground = (HBRUSH)1;
MainClass.lpszMenuName = NULL;
MainClass.lpszClassName = "MainClass";
if(!RegisterClass(&MainClass)) return FALSE;
hMain = CreateWindow("MainClass", "Fenêtre non redimensionnable :(", WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU,
50, 50, 270, 200,
NULL, NULL, hinst, NULL);
if (!hMain) return FALSE;
hMainRedim = CreateWindow("MainClass", "Fenêtre redimensionnable :)", WS_OVERLAPPEDWINDOW,
50, 50, 270, 200,
NULL, NULL, hinst, NULL);
if (!hMainRedim) return FALSE;
RedimFenetre = false;
ShowWindow(hMain, 1);
ShowWindow(hMainRedim, 0);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
/******************************************************************************/
LRESULT CALLBACK MainProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_CREATE:
{
CreateWindowEx((DWORD)NULL, "BUTTON", "Modifier fenetre",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_MULTILINE,
60, 50, 150, 60, hwnd, (HMENU)BTN_REDIM, hinst, NULL);
return 0;
}
case WM_MOVE:
{
//on récupère les coordonnées de la zone client dans x et y
x = (int)(short) LOWORD(lParam);
y = (int)(short) HIWORD(lParam);
return 0;
}
case WM_CLOSE:
SendMessage(hwnd, WM_DESTROY, NULL, NULL);
return 0;
case WM_COMMAND:
{
//lors du clic sur le bouton
if(LOWORD(wParam) == BTN_REDIM)
{
//si on doit afficher la fenetre NON redimensionnable
if(RedimFenetre == true)
{
/*on replace la fenetre non redimensionnable a la place
de la fenêtre redimensionnable*/
MoveWindow(hMain, x, y, 270, 200, TRUE);
//on masque la fenetre redimensionnable et on affiche l'autre
ShowWindow(hMainRedim, 0);
ShowWindow(hMain, 1);
//fenêtre non redimensionnable donc :
RedimFenetre = false;
}
//si on doit afficher la fenetre redimensionnable
else
{
/*on replace la fenetre redimensionnable a la place
de la fenêtre non redimensionnable*/
MoveWindow(hMainRedim, x, y, 270, 200, TRUE);
//on masque la fenetre non redimensionnable et on affiche l'autre
ShowWindow(hMainRedim, 1);
ShowWindow(hMain, 0);
//fenêtre redimensionnable donc :
RedimFenetre = true;
}
}
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
} |
Partager