Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рисование bitmap на форме 
:(
    Опции темы
TheVad
Дата 9.4.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



Битмепа находится в ресурсах. Как сделать чтобы она нарисовалась на форме. Заранее спасибо. smile
PM MAIL   Вверх
Fixin
Дата 9.4.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Код

HBITMAP Bitmap;
void Window_OnPaint(HWND hwnd)
{
    int CoordX = 0, CoordY = 0;
    PAINTSTRUCT PaintStruct;
    BITMAP bm;
    HDC PaintDC = BeginPaint(hwnd, &PaintStruct);
    HDC PicDC = CreateCompatibleDC(PaintDC);
    HBITMAP OldBitmap = SelectBitmap(PicDC, Bitmap);
    GetObject(Bitmap, sizeof(BITMAP), &bm);
    BitBlt(PaintDC, CoordX, CoordY, bm.bmWidth, bm.bmHeight, PicDC, 0, 0, SRCCOPY);
    SelectObject(PicDC, OldBitmap);
    DeleteDC(PicDC);
    EndPaint(hwnd, &PaintStruct);
}

void Window_OnCreate(HWND hwnd, CREATESTRUCT* pCreateStruct)
{
    Bitmap = LoadBitmap(pCreateStruct->hInstance);
}

void Window_OnDestroy(HWND hwnd)
{
    DeleteBitmap(Bitmap);
}

PM MAIL ICQ   Вверх
TheVad
Дата 9.4.2006, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



CREATESTRUCT* pCreateStruct - если можно разъясни этот параметр..
и еще компилятро ругается на: DeleteBitmap();
CreateBitmap();
LoadBitmap();

Это сообщение отредактировал(а) TheVad - 9.4.2006, 19:15
PM MAIL   Вверх
Fixin
Дата 9.4.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Видишь, у меня обработка событий в отдельных функциях? Вот, указатель на эту структуру приходит в параметре LPARAM ф-ции обработки сообщений вместе с сообщением WM_CREATE. Есть некоторые условия с этой структурой, но не забивай себе голову. Просто вставь этот код в обработчик.

ЗЫ: Просто я использую взломщики сообщений и windowsx.h. Немного (совсем) облегчается программирование на АПИ.
PM MAIL ICQ   Вверх
TheVad
Дата 9.4.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



у меня LoadBitmap требует 2 параметра..
Код

#include <windowsx.h>
#include "resource.h"
static HINSTANCE hinst = NULL;
BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
HBITMAP Bitmap;
void Window_OnPaint(HWND hwnd)
{
    int CoordX = 0, CoordY = 0;
    PAINTSTRUCT PaintStruct;
    BITMAP bm;
    HDC PaintDC = BeginPaint(hwnd, &PaintStruct);
    HDC PicDC = CreateCompatibleDC(PaintDC);
    HBITMAP OldBitmap = SelectBitmap(PicDC, Bitmap);
    GetObject(Bitmap, sizeof(BITMAP), &bm);
    BitBlt(PaintDC, CoordX, CoordY, bm.bmWidth, bm.bmHeight, PicDC, 0, 0, SRCCOPY);
    SelectObject(PicDC, OldBitmap);
    DeleteDC(PicDC);
    EndPaint(hwnd, &PaintStruct);
}
void Window_OnCreate(HWND hwnd,CREATESTRUCT* pCreateStruct)
{
    Bitmap = LoadBitmap(pCreateStruct->hInstance); // здесь пишет надо два параметра.. какой второй?  
}
void Window_OnDestroy(HWND hwnd)
{
    DeleteBitmap(Bitmap);
}

/////
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE, LPSTR lpTemplate , int)
{
    hinst=hInst;
    DialogBox(hInst,(char*)IDD_DIALOG1,0,DlgProc);
    return 0;
}
BOOL CALLBACK DlgProc(HWND hwnd,UINT msg, WPARAM wParam, LPARAM lParam)
{

    switch(msg)
    {
    case WM_CREATE:
        Window_OnCreate(hwnd,      );// какой сюда параметр?.. что то я никак не пойму..
        break;
    case WM_PAINT:
        Window_OnPaint(hwnd);
        break;
    case WM_DESTROY:
        Window_OnDestroy(hwnd);
        break;
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
   };
    return 0;
}



PM MAIL   Вверх
Fixin
Дата 9.4.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Цитата(TheVad @ 9.4.2006, 19:11 Найти цитируемый пост)
CreateBitmap();
Это откуда? smile

Цитата(TheVad @ 9.4.2006, 19:11 Найти цитируемый пост)
DeleteBitmap();
DeleteObject();

Цитата(TheVad @ 9.4.2006, 19:11 Найти цитируемый пост)
LoadBitmap();
Не может быть...
Добавлено @ 19:49
Цитата(TheVad @ 9.4.2006, 19:40 Найти цитируемый пост)
у меня LoadBitmap требует 2 параметра..

Код

LoadBitmap(pCreateStruct->hInstance, "BitmapNameInResource");

Код

Window_OnCreate(hwnd,      );// какой сюда параметр?.. что то я никак не пойму..
Window_OnCreate(hwnd,     ((CREATESTRUCT*)(lParam)) ? 0L : (LRESULT)-1L);

PM MAIL ICQ   Вверх
TheVad
Дата 9.4.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



LPCTSTR - второй параметр, зачем мне врать?(:
Код

case WM_CREATE:
        Window_OnCreate(hwnd, // какой сюда параметр?.. что то я никак не пойму..);
        break;

.......ОЙ, сразу не появилась вторая часть твоего сообщение, сорри...

Это сообщение отредактировал(а) TheVad - 9.4.2006, 19:53
PM MAIL   Вверх
TheVad
Дата 9.4.2006, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



Window_OnCreate(hwnd, ((CREATESTRUCT*)(lParam)) ? 0L : (LRESULT)-1L);
- ругается на это
переделал так :
Window_OnCreate(hwnd, (lParam) ((CREATESTRUCT*) ? 0L : (LRESULT)-1L)); // но тогда он ругается на '?'

PM MAIL   Вверх
Fixin
Дата 9.4.2006, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Забей на условие
Код
Window_OnCreate(hwnd, (CREATESTRUCT*) lParam);

PM MAIL ICQ   Вверх
TheVad
Дата 9.4.2006, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



Скомпилировалось все, но вот битмепа не нарисовалась..
Вот код:
Код

#include <windowsx.h>
#include "resource.h"
static HINSTANCE hinst = NULL;
BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
HBITMAP Bitmap;
void Window_OnPaint(HWND hwnd)
{
    int CoordX = 0, CoordY = 0;
    PAINTSTRUCT PaintStruct;
    BITMAP bm;
    HDC PaintDC = BeginPaint(hwnd, &PaintStruct);
    HDC PicDC = CreateCompatibleDC(PaintDC);
    HBITMAP OldBitmap = SelectBitmap(PicDC, Bitmap);
    GetObject(Bitmap, sizeof(BITMAP), &bm);
    BitBlt(PaintDC, CoordX, CoordY, bm.bmWidth, bm.bmHeight, PicDC, 0, 0, SRCCOPY);
    SelectObject(PicDC, OldBitmap);
    DeleteDC(PicDC);
    EndPaint(hwnd, &PaintStruct);
}
void Window_OnCreate(HWND hwnd,CREATESTRUCT* pCreateStruct)
{
    Bitmap = LoadBitmap(pCreateStruct->hInstance,"bitmap1.bmp");/*MAKEINTRESOURCE(IDB_EMPTY));*/
}

void Window_OnDestroy(HWND hwnd)
{
    DeleteObject(Bitmap);
}

/////
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE, LPSTR lpTemplate , int)
{
    hinst=hInst;
    DialogBox(hInst,(char*)IDD_DIALOG1,0,DlgProc);
    return 0;
}
BOOL CALLBACK DlgProc(HWND hwnd,UINT msg, WPARAM wParam, LPARAM lParam)
{

    switch(msg)
    {
    case WM_CREATE:
    Window_OnCreate(hwnd, (CREATESTRUCT*) lParam);

        
        break;
    case WM_PAINT:
        Window_OnPaint(hwnd);
        break;
    case WM_DESTROY:
        Window_OnDestroy(hwnd);
        break;
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
   };
    return 0;
}


PM MAIL   Вверх
Fixin
Дата 9.4.2006, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Покажи файл ресурсов.
PM MAIL ICQ   Вверх
TheVad
Дата 9.4.2006, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



Код

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by SeaFight.rc
//
#define IDD_DIALOG1                     101
#define IDB_SHIP                        103
#define IDB_BITMAP1                     104
#define IDB_RIP                         104
#define IDB_EMPY                        105
#define IDB_EMPTY                       -1

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        106
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif


PM MAIL   Вверх
Fixin
Дата 9.4.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Я про тот, в котором диалог и картинка
PM MAIL ICQ   Вверх
TheVad
Дата 9.4.2006, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



Код

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Russian resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_DIALOG1 DIALOGEX 0, 0, 591, 314
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | 
    WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    GROUPBOX        "Vad",IDC_STATIC,7,62,274,245
    GROUPBOX        "Barberan",IDC_STATIC,293,62,274,245
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO 
BEGIN
    IDD_DIALOG1, DIALOG
    BEGIN
        LEFTMARGIN, 7
        TOPMARGIN, 7
        BOTTOMMARGIN, 307
    END
END
#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//

IDB_EMPY                BITMAP                  "bitmap1.bmp"
IDB_SHIP                BITMAP                  "bitmap2.bmp"
IDB_RIP                 BITMAP                  "bmp00001.bmp"
#endif    // Russian resources
/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

#endif    // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//

PM MAIL   Вверх
Fixin
Дата 9.4.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Тут нужно указывать имя ресурса:
Код

Bitmap = LoadBitmap(pCreateStruct->hInstance,"bitmap1.bmp");/*MAKEINTRESOURCE(IDB_EMPTY));*/

В данном случае либо "105", либо "-1", либо пользоваться MAKEINTRESOURCE(IDB_EMPTY)
Код

IDB_EMPY                BITMAP                  "bitmap1.bmp"

Код

#define IDB_EMPY                        105    
#define IDB_EMPTY                       -1

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1125 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.