Удомельский форум   ◊
www.udomlya.ru | Медиа-Центр | Удомля КТВ | Старый форум

Вернуться   Удомельский форум > Hard&Soft > Программирование
Справка Пользователи Календарь Сообщения за день
 
 
Опции темы Опции просмотра
Старый 23.09.2011, 00:31   #1
Daarken
Новичок
 
Аватар для Daarken
 
Регистрация: 09.07.2010
Сообщений: 7
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вопрос Dev cpp не хотят добавляться ресурсы

написал программу в VS 2010 но она не работает на компьтерах где нет вижуал студии 10 ,а точнее библиотеки msvcr100.dll.
решил использовать другой компилятор ,выбрал dev-cpp.
исправил программу немного - откомпилировал,она запустилась но изображение в приложении отсутствует и именно из-за того что не подключены изображения.
напрямую LoadImage'ом из какой либо директории открывает нормально
LoadBitmap'ом из ресурсов ни в какую


main.cpp
Код:
#include "Resource.h"


LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);


int nCmdShow=1;
char szWindowClass[ ] = "WindowsApp";
int s=0,j=0,p;
static TCHAR szTitle[] = "!!!";

static HINSTANCE hInst;
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{

    HWND hwnd;               
    MSG messages;            
    WNDCLASSEX wincl;        

   
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szWindowClass;
    wincl.lpfnWndProc = WindowProcedure;      
    wincl.style = CS_DBLCLKS;                 
    wincl.cbSize = sizeof (WNDCLASSEX);

    
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 
    wincl.cbClsExtra = 0;                      
    wincl.cbWndExtra = 0;                      
    wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

    
    if (!RegisterClassEx (&wincl))
        return 0;

     
for(j;j<=5;j++)
    {
        hwnd = CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,rand()%1000,rand()%700,500, 500,NULL,NULL,hThisInstance,NULL);
    
        s=3;
        ShowWindow(hwnd,nCmdShow);
        UpdateWindow(hwnd);
    }
    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }

   
    return messages.wParam;
}



LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                 
        {
       case WM_PAINT:
        HBITMAP hBm,old;
        HDC ourDC;
        if(s%2){
            hBm = LoadBitmap(hInst,"IDB_BITMAP1");
            ourDC = CreateCompatibleDC(GetDC(hwnd));
            old = (HBITMAP)SelectObject(ourDC, hBm);
            BitBlt(GetDC(hwnd), 100, 100,271,249, ourDC, 0, 0, SRCCOPY);
        }else{
            hBm= LoadBitmap(hInst,"IDB_BITMAP2");
            ourDC = CreateCompatibleDC(GetDC(hwnd));
            old = (HBITMAP)SelectObject(ourDC, hBm);
            BitBlt(GetDC(hwnd), 100, 100,291,211, ourDC, 0, 0, SRCCOPY);
            }
        break;
    case WM_DESTROY:{s++;
         p=j; 
         for(j;j<=p*2;j++)
         {
            hwnd = CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,rand()%1200,rand()%700,500, 500,NULL,NULL,hInst,NULL);
            ShowWindow(hwnd,nCmdShow);    
            UpdateWindow(hwnd);
         }
    }
        default:                      
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

resource.h
Код:
#include "windows.h"
#define IDB_BITMAP1                     100

bitmap.rc
Код:
#include "Resource.h"

IDB_BITMAP1 BITMAP "1.bmp"
IDB_BITMAP2 BITMAP "2.bmp"
подскажите пожалуйста в чем моя кривизна рук
Daarken вне форума  
Старый 23.09.2011, 09:19   #2
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,452
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию

1) При возникновении проблемы менять среду, не есть гуд.

Следовало либо установить на целевой компьютер Microsoft Visual C++ 2010 Redistributable Package. Почти любая программа на с++ использует стандартную библиотеку - c runtime library, которая содержит набор функций, используемых программой. (с)
Чуть менее очевидный способ - статическая компоновка. Заходим в опции проекта, находим там опции компилятора (C/C++ -> Code Generation), и меняем параметр Runtime Library с "Multi Threaded DLL (/MD)" на "Multi Threaded (/MT)". Для отладочной версии программы нужно поменять "Multi Threaded Debug DLL (/MDd)", на "Multi Threaded Debug (/MTd)". После перекомпиляции, несем программу на любую машину и запускаем. (с)

2) Сильно не разбирался, но попробуйте загружать картинку -
Цитата:
LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP2));

Последний раз редактировалось Troll; 23.09.2011 в 09:33.
Troll вне форума  
Старый 23.09.2011, 14:52   #3
Daarken
Новичок
 
Аватар для Daarken
 
Регистрация: 09.07.2010
Сообщений: 7
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Цитата:
При возникновении проблемы менять среду, не есть гуд
знаю,но я не знал про статическую компоновку ,потомучто api начал изучать совсем недавно

это прототип программы шутки поэтому не вариант устанавливать библиотеки.
Код:
LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP2));
пробовал уже-не помогает

статическая компоновка помогла,НО на xp программа некорректно работает(нормально отображается только первое окно),нормально не работает даже если библиотеки установить,на семерке все отлично,хотелось бы что работало везде нормально.
странно то что при статическом подключении библиотек размер увеличился всего ~30 кб ,я думал больше будет

Последний раз редактировалось Daarken; 23.09.2011 в 14:59.
Daarken вне форума  
Старый 23.09.2011, 16:18   #4
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,452
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию

Цитата:
Сообщение от Daarken Посмотреть сообщение
знаю,но я не знал про статическую компоновку ,потомучто api начал изучать совсем недавно

это прототип программы шутки поэтому не вариант устанавливать библиотеки.
Код:
LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP2));
пробовал уже-не помогает

статическая компоновка помогла,НО на xp программа некорректно работает(нормально отображается только первое окно),нормально не работает даже если библиотеки установить,на семерке все отлично,хотелось бы что работало везде нормально.
странно то что при статическом подключении библиотек размер увеличился всего ~30 кб ,я думал больше будет
Это были варианты или. Т.е. или установить библиотеку или компоновка.
В чем выражается некорректность отображения окон в XP?
Troll вне форума  
Старый 23.09.2011, 16:48   #5
Daarken
Новичок
 
Аватар для Daarken
 
Регистрация: 09.07.2010
Сообщений: 7
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

когда открывается первое окно там почти всегда есть картинка,когда это окно закрывается открываются два ,уже с другой картинкой,которая отображается далеко не при каждом запуске программы,а если закрыть одно из этих двух окон то появятся просто 4 пустых окна ,а если еще и подвигать одно из окон программы то пол экрана вообще перекрывается белым цветом

попытался скрин сделать
первый раз получилось нечто-всё черное кроме букв диспетчера задач,и больше вообще ничего на скрине нет
второй раз пэйнт мне написал про переполнение буфера

Последний раз редактировалось Daarken; 23.09.2011 в 17:25.
Daarken вне форума  
Старый 23.09.2011, 18:09   #6
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,452
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию

Зацикливается на перерисовке последнего отображенного окна.
Troll вне форума  
Этот пользователь сказал Спасибо Troll за это полезное сообщение:
Daarken (23.09.2011)
Старый 23.09.2011, 18:27   #7
Daarken
Новичок
 
Аватар для Daarken
 
Регистрация: 09.07.2010
Сообщений: 7
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

ооо спасибо большое!
добавил бегинпайнт и эндпайнт все стало просто замечательно!
Daarken вне форума  
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:44. Часовой пояс GMT +3.


Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie. Продолжая работу с сайтом, Вы разрешаете использование cookie-файлов. Вы всегда можете отключить файлы cookie в настройках Вашего браузера.
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot