Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Niko Demin
3 / 3 / 0
Регистрация: 21.01.2015
Сообщений: 90

Не выводится битмап

21.03.2017, 21:07. Показов 1309. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
#include "stdafx.h"
#include "stdafx.cpp"
// Global Variables:
HINSTANCE hInst;                                // current instance
TCHAR szTitle[] = "MyWindow";                   // The title bar text
TCHAR szMainWindow[] = "MyWindow";          // the main window class name
// Forward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance, LPCSTR, WNDPROC);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
 
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    HWND hWnd;
    MyRegisterClass(hInstance, szMainWindow, WndProc);
 
    hWnd = CreateWindow(szMainWindow, szTitle, WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
 
    if (!hWnd)
    {
        return FALSE;
    }
 
    ShowWindow(hWnd, nCmdShow);
 
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int)msg.wParam;
}
 
 
 
//
//  FUNCTION: MyRegisterClass()
//
//  PURPOSE: Registers the window class.
//
ATOM MyRegisterClass(HINSTANCE hInstance, LPCSTR szClassname, WNDPROC Proc)
{
    WNDCLASSEX wcex;
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = Proc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = szClassname;
    wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION);
 
    return RegisterClassEx(&wcex);
}
 
//
//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_COMMAND  - process the application menu
//  WM_PAINT    - Paint the main window
//  WM_DESTROY  - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    static RECT cl;
    static HBITMAP hBmp;
    static BITMAP bm;
    HDC hdc, hmemdc;
 
    switch (message)
    {
    case WM_CREATE:
        hBmp = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(ID_B_HORSE), IMAGE_BITMAP, 0, 0, LR_COPYFROMRESOURCE);
        //GetObject(hBmp, sizeof(bm),&bm);
 
        chessboard[1][2] = new PAWN(WHITE, 1, 2);
        chessboard[2][2] = new PAWN(WHITE, 2, 2);
        chessboard[3][2] = new PAWN(WHITE, 3, 2);
        chessboard[4][2] = new PAWN(WHITE, 4, 2);
        chessboard[5][2] = new PAWN(WHITE, 5, 2);
        chessboard[6][2] = new PAWN(WHITE, 6, 2);
        chessboard[7][2] = new PAWN(WHITE, 7, 2);
        chessboard[8][2] = new PAWN(WHITE, 8, 2);
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        hmemdc = CreateCompatibleDC(hdc);
        SelectObject(hmemdc, hBmp);
        SetMapMode(hmemdc, GetMapMode(hdc));
        GetObject(hBmp, sizeof(BITMAP), (LPSTR)&bm);
 
        BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hmemdc, 0, 0, SRCCOPY);
        DeleteDC(hmemdc);
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.03.2017, 21:07
Ответы с готовыми решениями:

Как извлечь файл(битмап) из ресурсов программы?
Пишу на Visual Studio 2017 Имеется .jpg файл хранимый в ресурсах, после компиляции видно что он сидит в программе, её размер увеличился. ...

Копирование Битмап
Здравствуйте, В программе возникает необходимость часто копировать Bitmap. Делаю это пока...

Размытый битмап
Добрый вечер,уважаемые форумчане! Столкнулся со следующей проблемой. Загружаю битмап 2048х2048 (или 1024х1024) - не важно, текстуры...

6
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
22.03.2017, 09:49
весь проект давай целиком. . с ресурсами, идентификаторами и прочей фигней
откуда тут понять что такое chessboard, PAWN, ID_B_HORSE ?
0
 Аватар для Niko Demin
3 / 3 / 0
Регистрация: 21.01.2015
Сообщений: 90
22.03.2017, 18:03  [ТС]
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
 
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
 
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
 
/////////////////////////////////////////////////////////////////////////////
// Russian (Russia) resources
 
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
 
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
 
1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END
 
2 TEXTINCLUDE 
BEGIN
    "#include ""winres.h""\r\n"
    "\0"
END
 
3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END
 
#endif    // APSTUDIO_INVOKED
 
 
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
 
ID_B_HORSE              BITMAP                  "C:\\Users\\Niko\\Documents\\Visual Studio 2013\\Projects\\CHESS2\\CHESS2\\imgs\\B_HORSE.bmp"
ID_B_KING               BITMAP                  "B_KING.BMP"
ID_B_OFFICER            BITMAP                  "B_OFFICER.BMP"
ID_B_PAWN               BITMAP                  "B_PAWN.BMP"
ID_B_ROOK               BITMAP                  "B_ROOK.BMP"
ID_B_QEEN               BITMAP                  "B_QEEN.BMP"
ID_W_HORSE              BITMAP                  "W_HORSE.BMP"
ID_W_KING               BITMAP                  "W_KING.BMP"
ID_W_OFFICER            BITMAP                  "W_OFFICER.BMP"
ID_W_PAWN               BITMAP                  "W_PAWN.BMP"
ID_W_QEEN               BITMAP                  "W_QEEN.BMP"
ID_W_ROOK               BITMAP                  "W_ROOK.BMP"
#endif    // Russian (Russia) resources
/////////////////////////////////////////////////////////////////////////////
 
 
 
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
 
 
/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED
 
 
//resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Resource.rc
//
#define ID_B_HORSE                      102
#define ID_B_KING                       104
#define IDB_BITMAP1                     105
#define ID_W_ROOK                       105
#define ID_B_OFFICER                    106
#define ID_B_PAWN                       109
#define ID_B_ROOK                       110
#define ID_B_QEEN                       111
#define ID_W_HORSE                      112
#define ID_W_KING                       113
#define ID_W_OFFICER                    114
#define ID_W_PAWN                       115
#define ID_W_QEEN                       116
 
// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        108
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif
//stdafx.cpp
#include "stdafx.h"
struct pos
{
    UINT x, y, size;
    pos(){}
    pos(UINT _x, UINT _y, UINT _s) : x(_x), y(_y), size(_s){}
};
class UNIT
{
protected:
    UINT value;
    bool color;
    pos position;
public:
    UNIT(){}
    UNIT(UINT val, bool col, UINT _x, UINT _y) : value(val), color(col) { position.x = _x; position.y = _y; }
 
    pos get_pos()
    {
        return position;
    }
 
    virtual pos* generate_steps() = 0;
    void go2(UINT _x, UINT _y);
};
 
struct PAWN : public UNIT
{
    PAWN() : UNIT(2, 0, 0, 0){}
    PAWN(bool _col, UINT _x, UINT _y) : UNIT(2, _col, _x, _y){}
    pos* generate_steps()
    {
        if (color == WHITE)
        if (position.y == 2)
        {
            pos* a = new pos[2];
            a[0] = pos(position.x, 3, 2);
            a[1] = pos(position.x, 4, 2);
            return a;
        }
        else
        {
            pos* a = new pos(position.x, position.y + 1, 1);
            return a;
        }
        else if (position.y == 7)
        {
            pos* a = new pos[2];
            a[0] = pos(position.x, 6, 2);
            a[1] = pos(position.x, 5, 2);
        }
        else
        {
            pos* a = new pos(position.x, position.y - 1, 1);
            return a;
        }
    }
    
};
static UNIT* chessboard[8][8];
/*void UNIT::go2(UINT _x, UINT _y)
    {
        chessboard[_x][_y] = this;
        delete chessboard[position.x][position.y];
    }
    */
//stdafx.h
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#define BLACK 1
#define WHITE 0
 
#pragma once
// Windows Header Files:
#include <windows.h>
#include "resource.h"
 
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
 
 
// TODO: reference additional headers your program requires here
Добавлено через 1 минуту
rc файл создавал через add ->new item->resource rc
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
22.03.2017, 20:56
Niko Demin, а загружается нормально? Что возвращают функции LoadImage, GetObject ? Поля структуры BITMAP bm имеют правильные значения ?
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
23.03.2017, 12:03
ёптить. . .свалил всё в кучу.. и .rc и stdafx

"весь проект" - это значит архив с целым проектом и картинками, чтобы можно было открыть в студии и в отладчике посмотреть в чем проблема. А так кто эти куски компилировать будет?
1
 Аватар для Niko Demin
3 / 3 / 0
Регистрация: 21.01.2015
Сообщений: 90
23.03.2017, 21:48  [ТС]
пожалуйста. Вот архив
Вложения
Тип файла: rar CHESS2.part1.rar (10.00 Мб, 5 просмотров)
Тип файла: rar CHESS2.part2.rar (5.70 Мб, 3 просмотров)
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
24.03.2017, 15:13
Лучший ответ Сообщение было отмечено Niko Demin как решение

Решение

Поправь загрузку битмапа:
C++
1
hBmp = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_B_HORSE), IMAGE_BITMAP, 0, 0, LR_COPYFROMRESOURCE);
И в WM_PAINT'е не надо каждый раз создавать/удалять контекст. Лучше это сделать один раз при создании и потом им пользоваться.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.03.2017, 15:13
Помогаю со студенческими работами здесь

Работа с битмап
Привет всем, подскажите пожалуйста как сделать следующее: -берутся изображения 100х100 пикселей, но с нюансом: бывают ровно 100х100,...

Слоеный битмап?
Суть в следующем, есть bitmap на нем рисуется сложный график, поверх графика рисуется специфический курсор-шкала с разными наворотами, и...

Не выводит битмап на форму
Добрый день! Скажите пожалуйста почему битмап не появляется в форме? unit Unit1; interface uses Windows, Messages,...

Сохранение в битмап из chart
Подскажите, как сохранить изображение из chart'а? Добавлено через 1 час 19 минут Нужно с выбором места сохранения и редактированием...

Извлечь битмап из OLE_HANDLE
Здравствуйте. В приложении имеется ActiveX компонент, который возвращает хэндл изображения в формате OLE_HANDLE. Мне нужно получить с...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru