Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382

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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.12.2017, 15:09
Ответы с готовыми решениями:

Dev c++ синтаксис вывода в форму текста label
какой синтаксис вывода в форму текста label ? вставить в форму ниже, где вывод двух кнопок где одна звенит а другая закрывает...

Поправить код вывода картинки раздела
Добрый есть у меня некий код вывода картинки раздела, он работает! НО как сделать размер картинки определенного размера и вывод слева...

Определить код для вывода картинки в HTML по css
Я с css не очень дружу,поэтому выручайте У меня в файле main.css есть следующая строка .headInside { background...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.12.2017, 15:09
Помогаю со студенческими работами здесь

Какой sql код нужно применить, для вывода имён только на букву а?
(Access таблицы) Имеется запрос, построеный на основе таблицы Сотрудники. Мне нужно с помощью sql вывести только те имена сотрудников,...

winapi в Dev C++
Всем доброго времени суток !! Подскажите пожалуйста в дев с есть заготовки под winapi если есть немогли бы показать где они находятся буду...

Какой код добавить, чтобы появилась возможность скачивания картинки разными размерами?
какой код необходимо добавить чтобы появилась возможность скачивания картинки разными размерами? &lt;?php $db =...

Учебник по WINAPI в DEV-C/C++
Спасайте))Нужен хороший учебник в электронном варианте.Нашёл хорошие,но они платные...Желательно 2005 года и старше.

Ошибка при загрузке иконки и курсора (winapi, dev c++)
Всем доброго вечера! Изучаю winapi и как раз дошла до темы загрузки пользовательских иконок и курсоров в учебнике Петцольда. Программку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru