Форум программистов, компьютерный форум CyberForum.ru

Вывод изображения в WinAPI - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выбрать самую ближайшую точку http://www.cyberforum.ru/cpp-beginners/thread568934.html
Есть задачка, но попробую абстрагироваться от неё: есть 5 точек (x1 > x2> ...>x5). На вход поступает точка x. Нужно выбрать такую точку (x1 - x5), от которой будет ближе всего находится x. Немного упростим задачу: двигаться будем только вперёд (тоесть выбранная точка должна быть больше x). Хотя если предложите вариант хорошего алгоритма без моего упрощения то тоже буду рад :) Я чего тему...
C++ проблева ввода строки Пропускает ввод строки. Какого черта?) #include<iostream> using namespace std; void main() { int a; char str; cout<<"vvedite chislo\n"; cin>>a; http://www.cyberforum.ru/cpp-beginners/thread568929.html
Помогите Пожалуйста. C++
Данная квадратная матрица размером m * m. Строки, максимальные элементы которых лежат выше главной диагонали, записать в обратном порядке.
C++ Проверка на цифры
Всем привет, вот столкнулся с проблемой, мне нужно нарисовать график, данные берутся из текст боксов. Хотел сделать проверку на цифры, если данные из текст бокса равны цифре, то рисовать, если нет, то выдать ошибку, вот не получается у меня код, не поможете пожалуйста? Большое спасибо за помошь! float min = float::Parse(Textbox_min->Text); float max =...
C++ Классы vs Структуры http://www.cyberforum.ru/cpp-beginners/thread568907.html
Часто сталкиваюсь в этой ветке форума с вопросами по структурам и на порядок реже -- с вопросами по классам. Я так понимаю, что это связано с тем, что в вузах учат чаще и больше структуры, чем классы. Есть ли у структур какие-то преимущества перед классами (кроме того, что классы не понимают компиляторы чистого С)? Мне казалось, что классы=структуры+методы, т.е. классы более удобный и...
C++ Массив. Нахождение максимального числа, повторяющегося более 1 раза. Все привет!) Есть программа. Возможно ли здесь создать определенный массив, а не рандомный? #include "stdafx.h" #include <conio.h> #include <iostream> #include <time.h> using namespace std; int main() подробнее

Показать сообщение отдельно
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
08.05.2012, 21:31     Вывод изображения в WinAPI
Вот не получается загрузить картинку
Делаю по примеру найденому здесь на форуме
Но у меня не находит файл
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
#include <windows.h>
    
/* Вывод картинки */
 
LRESULT CALLBACK DCDemoWndProc(HWND, UINT, UINT, LONG);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow){
    HWND hWnd;
    WNDCLASS WndClass;
    MSG Msg;    
    /* Регистрация класса окна */
    /* Заполнение структуры WNDCLASS */
    WndClass.style = CS_HREDRAW | CS_VREDRAW;
    WndClass.lpfnWndProc = DCDemoWndProc;
    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 = L"MyMenu";
    WndClass.lpszClassName = L"DCDemo";
    
    if ( !RegisterClass(&WndClass) ){
        MessageBox(NULL, L"Can't register class!", L"ERROR!", MB_OK);
        return 0;
    }
    
    hWnd = CreateWindow(L"DCDemo", L"Picture", WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL, CW_USEDEFAULT, 
        CW_USEDEFAULT, 
                        CW_USEDEFAULT, 
                        CW_USEDEFAULT, 
                        NULL, NULL,
                        hInstance,
                        0);
    if ( !hWnd ) {
        MessageBox(NULL, L"Can't create window!", L"ERROR!", MB_OK);
        return 0;
    }
    
    /* показать окно */
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
    
    /* Обработка сообщений */
    while ( GetMessage(&Msg, NULL, 0, 0) ){
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    
    return Msg.wParam;
}
 
LRESULT CALLBACK DCDemoWndProc(HWND hWnd, UINT Message, UINT wParam, LONG lParam) {
    HDC hDC, hCompatibleDC;
    PAINTSTRUCT PaintStruct;
    HANDLE hBitmap, hOldBitmap;
    RECT Rect;
    BITMAP Bitmap;
    static int nHDif = 0, nVDif = 0, nHPos = 0, nVPos = 0;
    
    switch ( Message ) {
        case WM_PAINT :
            /* получить контекст устройства */
            hDC = BeginPaint(hWnd, &PaintStruct);
            /* загрузить bitmap который будет отображаться в окне из файла */
            hBitmap = LoadImage(NULL, L"picture.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
            if ( !hBitmap ){
                MessageBox(NULL, L"File not found!", L"Error", MB_OK);
                return 0;
            }
            /* получть размерность изображения */
            GetObject(hBitmap, sizeof(BITMAP), &Bitmap);
            /* создать совместимый с контекстом окна контекст в памяти */
            hCompatibleDC = CreateCompatibleDC(hDC);
            /* делаем загруженный битмап текущим в совместимом контексте */
            hOldBitmap = SelectObject(hCompatibleDC, hBitmap);
            /* определить размер рабочей области окна */
            GetClientRect(hWnd, &Rect);
            /* версия без прокрутки
            * копировать битмап с совместимого на основной контекст устройства с масштабированием 
            StretchBlt(hDC, 0, 0, Rect.right, Rect.bottom, hCompatibleDC, 0, 0, Bitmap.bmWidth, 
                Bitmap.bmHeight, SRCCOPY);
            */
            /* версия с прокруткой */
            BitBlt(hDC, 0, 0, Rect.right, Rect.bottom, hCompatibleDC,nHPos, nVPos, SRCCOPY);
            if ( ( nHDif = ( Bitmap.bmWidth - Rect.right ) ) > 0 )
                SetScrollRange(hWnd, SB_HORZ, 0, nHDif, TRUE);
            else
                SetScrollRange(hWnd, SB_HORZ, 0, 0, TRUE);
            if ( ( nVDif = ( Bitmap.bmHeight - Rect.bottom ) ) > 0 )
                SetScrollRange(hWnd, SB_VERT, 0, nVDif, TRUE);
            else
                SetScrollRange(hWnd, SB_VERT, 0, 0, TRUE);
            /* вновь делаем старый битмап текущим */
            SelectObject(hCompatibleDC, hOldBitmap);
            /* удалить загруженный битмап */
            DeleteObject(hBitmap);
            /* удалить совместимый контекст */
            DeleteDC(hCompatibleDC);
            /* освободить основной контекст, завершая перерисовку рабочей области окна */
            EndPaint(hWnd, &PaintStruct);
            return 0;
        case WM_VSCROLL :
            switch ( LOWORD(wParam) ){
                case SB_LINEDOWN :
                    if ( nVPos < nVDif )
                        ++nVPos;
                    break;
                case SB_LINEUP :
                    if ( nVPos > 0 )
                        --nVPos;
                    break;
                case SB_THUMBTRACK :
                    nVPos = HIWORD(wParam);
                    break;
            }
            SetScrollPos(hWnd, SB_VERT, nVPos, TRUE);
            InvalidateRect(hWnd, NULL, TRUE);
            return 0;
        case WM_HSCROLL :
            switch ( LOWORD(wParam) ){
                case SB_LINEDOWN :
                    if ( nHPos - nHDif )
                        ++nHPos;
                    break;
                case SB_LINEUP :
                    if ( nHPos > 0 )
                        --nHPos;
                    break;
                case SB_THUMBTRACK :
                    nHPos = HIWORD(wParam);
                    break;
            }
            SetScrollPos(hWnd, SB_HORZ, nHPos, TRUE);
            InvalidateRect(hWnd, NULL, TRUE);
            return 0;
        case WM_DESTROY :
            PostQuitMessage(0);
            return 0;
    }
    return DefWindowProc(hWnd, Message, wParam, lParam);
}
Где должен бить расположен файл рисунка???
У меня он вместе с исходниками... [/FONT][/SIZE]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru