DEV C++ WINAPI - какой код вывода картинки на форму?
29.12.2017, 15:09. Показов 616. Ответов 0
не фон в смысле. а просто минимальный вывод .bmp в форму.
Добавлено через 2 часа 50 минут
| C++ | 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
| #include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
static HBITMAP hImageBitmap;
static HBITMAP hImageOldBitmap;
static HDC hImageDC;
static BITMAP bm;
switch(Message) {
case WM_DESTROY: {
if (hImageBitmap)
{
DeleteObject (SelectObject (hImageDC, hImageOldBitmap));
DeleteDC (hImageDC);
}
PostQuitMessage(0);
break;
}
case WM_CREATE: {
hImageBitmap = (HBITMAP) LoadImage (NULL, "1.bmp", 0, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
if (hImageBitmap)
{
GetObject (hImageBitmap, sizeof (BITMAP), &bm);
HDC hDC = GetDC (hwnd);
hImageDC = CreateCompatibleDC (hDC);
hImageOldBitmap = (HBITMAP) SelectObject (hImageDC, hImageBitmap);
ReleaseDC (hwnd, hDC);
}
break;
}
case WM_PAINT: {
PAINTSTRUCT ps;
HDC hDC = BeginPaint (hwnd, &ps);
if (hImageBitmap)
BitBlt (hDC, 0, 0, bm.bmWidth, bm.bmHeight, hImageDC, 0, 0, SRCCOPY);
EndPaint (hwnd, &ps);
break;
}
default:
return DefWindowProc(hwnd, Message, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASSEX wc;
HWND hwnd;
MSG msg;
memset(&wc,0,sizeof(wc));
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = "WindowClass";
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc)) {
MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return 0;
}
hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass",
"Programos Langas su Fonu, centre, be maximaize",
WS_VISIBLE | WS_SYSMENU,
GetSystemMetrics(SM_CXSCREEN)/2-400,
GetSystemMetrics(SM_CYSCREEN)/2-300,
800,600,NULL,NULL,hInstance,NULL);
if(hwnd == NULL) {
MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return 0;
}
while(GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
} |
|
Добавлено через 3 часа 30 минут
нашел вроде то что надо, но не видит картинки 2.bmp :
| C++ | 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
| #include <windows.h>
#include <cstdlib>
using namespace std;
static HINSTANCE gInstance;
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE gInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
//Step 1: Registering the Window Class
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = gInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(DKGRAY_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "Custom Class";
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// if registration of main class fails
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// Step 2: Creating the Window
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
"Custom Class",
"Picture",
WS_CAPTION|WS_MINIMIZEBOX|WS_OVERLAPPED|WS_VISIBLE | WS_SYSMENU,
GetSystemMetrics(SM_CXSCREEN)/2-400,
GetSystemMetrics(SM_CYSCREEN)/2-300,
800,600,NULL,NULL,gInstance,NULL);
if(hwnd == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// Step 3: The Message Loop
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
// Create GUI
HBITMAP img = (HBITMAP) LoadImage( NULL, "2.bmp", IMAGE_BITMAP, 200, 200,
LR_CREATEDIBSECTION | LR_LOADFROMFILE );
HWND imageText = CreateWindowEx( 0, "static", "xxx", WS_CHILD | WS_VISIBLE | SS_BITMAP,
10, 10, 200, 200, hwnd, NULL, gInstance, NULL );
SendMessage( hwnd, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) img );
// HWND imat = CreateWindowEx( 0, "edit", "be visible", WS_CHILD | WS_VISIBLE | WS_BORDER,
// 10, 10, 200, 200, hwnd, NULL, gInstance, NULL );
}
break;
case WM_COMMAND:
{
switch(LOWORD(wParam)) {
default:
break;
}
}
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default: return DefWindowProc(hwnd, msg, wParam, lParam);
break;
}
} |
|
Добавлено через 13 часов 22 минуты
вот и решение:
| C++ | 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
| #include <windows.h>
#include <cstdlib>
using namespace std;
static HINSTANCE gInstance;
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE gInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
//Step 1: Registering the Window Class
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = gInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(DKGRAY_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "Custom Class";
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// if registration of main class fails
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// Step 2: Creating the Window
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
"Custom Class",
"Три картинки",
WS_CAPTION|WS_MINIMIZEBOX|WS_OVERLAPPED|WS_VISIBLE | WS_SYSMENU,
GetSystemMetrics(SM_CXSCREEN)/2-400,
GetSystemMetrics(SM_CYSCREEN)/2-300,
800,600,NULL,NULL,gInstance,NULL);
if(hwnd == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// Step 3: The Message Loop
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
HBITMAP img2 = (HBITMAP) LoadImage(NULL,"2.bmp",IMAGE_BITMAP,250,190,
LR_CREATEDIBSECTION | LR_LOADFROMFILE );
HWND imageText2 = CreateWindowEx( 0, "static", "xxx", WS_CHILD | WS_VISIBLE | SS_BITMAP,
430, 55, 250, 190, hwnd, NULL, gInstance, NULL );
SendMessage(imageText2, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) img2 );
HBITMAP img3 = (HBITMAP) LoadImage(NULL,"3.bmp",IMAGE_BITMAP,250,190,
LR_CREATEDIBSECTION | LR_LOADFROMFILE );
HWND imageText3 = CreateWindowEx( 0, "static", "xxx", WS_CHILD | WS_VISIBLE | SS_BITMAP,
100, 55, 250, 190, hwnd, NULL, gInstance, NULL );
SendMessage(imageText3, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) img3 );
HBITMAP img4 = (HBITMAP) LoadImage(NULL,"4.bmp",IMAGE_BITMAP,430,200,
LR_CREATEDIBSECTION | LR_LOADFROMFILE );
HWND imageText4 = CreateWindowEx( 0, "static", "xxx", WS_CHILD | WS_VISIBLE | SS_BITMAP,
174, 300, 430, 200, hwnd, NULL, gInstance, NULL );
SendMessage(imageText4, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) img4 );
}
break;
case WM_COMMAND:
{
switch(LOWORD(wParam)) {
default:
break;
}
}
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default: return DefWindowProc(hwnd, msg, wParam, lParam);
break;
}
} |
|
0
|