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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BitMap 
:(
    Опции темы
Zorak
Дата 6.2.2009, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Почему вот ето ничего не работает ?
Код

#include "windows.h"
#include "windowsx.h"

#define XSIZE 400
#define YSIZE 300

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL OnCreate(HWND, CREATESTRUCT FAR*);
void OnPaint(HWND);
void onDestroy(HWND);

//Car BITMAP "Car.bmp"

HINSTANCE hInstance;
HBITMAP hBitmap, hOldBitmap;
HDC hdcMem;
BITMAP bm;
                   
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int)
{
    char szClassName[] = "MainWindow";
    char szTitle[] = "Create by Terrian";
    MSG msg;
    WNDCLASS T;
    ZeroMemory(&T, sizeof(T));

    T.lpfnWndProc = WndProc;
    T.hInstance = hInst;
    T.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    T.hCursor = LoadCursor(NULL,IDC_ARROW);
    T.hbrBackground = GetStockBrush(LTGRAY_BRUSH);
    T.lpszClassName = szClassName;
    
    RegisterClass(&T);

    HWND hwnd = CreateWindow(szClassName,szTitle,WS_OVERLAPPEDWINDOW,500,300,XSIZE,YSIZE,HWND_DESKTOP,NULL,hInst,NULL);
    ShowWindow(hwnd,SW_SHOWNORMAL);

    while (GetMessage(&msg,NULL,0,0))
        DispatchMessage(&msg);
    return 0;

    

}

LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
        HANDLE_MSG(hWnd,WM_DESTROY,onDestroy);
        HANDLE_MSG(hWnd,WM_PAINT,OnPaint);
        HANDLE_MSG(hWnd,WM_CREATE,OnCreate);
    default:return(DefWindowProc(hWnd,msg,wParam,lParam));
    }
}

void onDestroy(HWND)
{
    DeleteBitmap(hBitmap);
    SelectBitmap(hdcMem,hOldBitmap);
    DeleteDC(hdcMem);
    PostQuitMessage(0);
}

BOOL OnCreate(HWND hWnd, LPCREATESTRUCT)
{
    hBitmap = (HBITMAP)LoadImage(hInstance,"Car.bmp",IMAGE_BITMAP,0,0,0);
    GetObject(hBitmap,sizeof(hBitmap),&bm);
    HDC hdc = GetDC(hWnd);
    hdcMem = CreateCompatibleDC(hdc);
    hOldBitmap = SelectBitmap(hdcMem,hBitmap);
    ReleaseDC(hWnd,hdc);
    return TRUE;
}

void OnPaint (HWND hWnd)
{
    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hWnd,&ps);
        BitBlt(hdc,25,20,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY);
    EndPaint(hWnd,&ps);
}

Когда я раскаменчу строку Car BITMAP "Car.bmp", то видает след. ошибки:
Код

--------------------Configuration: RastrBMP - Win32 Debug--------------------
Compiling...
RastrBMP.cpp
D:\Programmer\!!! Projects !!!\Visual C++\RastrBMP\RastrBMP.cpp(12) : error C2146: syntax error : missing ';' before identifier 'BITMAP'
D:\Programmer\!!! Projects !!!\Visual C++\RastrBMP\RastrBMP.cpp(12) : error C2501: 'Car' : missing storage-class or type specifiers
D:\Programmer\!!! Projects !!!\Visual C++\RastrBMP\RastrBMP.cpp(12) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

RastrBMP.exe - 3 error(s), 0 warning(s)

З.Ы. В ресурсах я ничего не добавлял.. может в етом моя проблема ?.. Если да, то подскажите как правильно ето сделать )


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Alca
Дата 7.2.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Раз:
Код

#define IDB_Car 5000
IDB_Car BITMAP "Car.bmp"

Два:
Не
Код

BITMAP bm;

а
Код

HBITMAP bm;


Это сообщение отредактировал(а) Alca - 7.2.2009, 10:52


--------------------
PM WWW ICQ Skype Jabber   Вверх
GremlinProg
Дата 7.2.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Zorak @  7.2.2009,  00:22 Найти цитируемый пост)
Car BITMAP "Car.bmp"

такая запись возможна только в файле ресурсов
открой *.rc и скопируй это туда
затем, открой resource.h и добавь определение
Код

#define Car 100

иначе русерс добавится под именем "Car", но, в принципе, если тебе это не важно, можешь это определение и не добавлять, просто впоследствии, в LoadBitmap придется передавать строку "Car", а не идентификатор 100
делай как удобно

Добавлено через 4 минуты и 37 секунд
можно и проще, через меню: Add Resource -> Import


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW 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.

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


 




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


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

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