◊ | |
www.udomlya.ru | Медиа-Центр | Удомля КТВ | Старый форум |
23.09.2011, 00:31 | #1 |
Новичок
Регистрация: 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" |
23.09.2011, 09:19 | #2 | |
Супер-Модератор
|
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) Сильно не разбирался, но попробуйте загружать картинку - Цитата:
Последний раз редактировалось Troll; 23.09.2011 в 09:33. |
|
23.09.2011, 14:52 | #3 | |
Новичок
Регистрация: 09.07.2010
Сообщений: 7
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
это прототип программы шутки поэтому не вариант устанавливать библиотеки. Код:
LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP2)); статическая компоновка помогла,НО на xp программа некорректно работает(нормально отображается только первое окно),нормально не работает даже если библиотеки установить,на семерке все отлично,хотелось бы что работало везде нормально. странно то что при статическом подключении библиотек размер увеличился всего ~30 кб ,я думал больше будет Последний раз редактировалось Daarken; 23.09.2011 в 14:59. |
|
23.09.2011, 16:18 | #4 | |
Супер-Модератор
|
Цитата:
В чем выражается некорректность отображения окон в XP? |
|
23.09.2011, 16:48 | #5 |
Новичок
Регистрация: 09.07.2010
Сообщений: 7
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
когда открывается первое окно там почти всегда есть картинка,когда это окно закрывается открываются два ,уже с другой картинкой,которая отображается далеко не при каждом запуске программы,а если закрыть одно из этих двух окон то появятся просто 4 пустых окна ,а если еще и подвигать одно из окон программы то пол экрана вообще перекрывается белым цветом
попытался скрин сделать первый раз получилось нечто-всё черное кроме букв диспетчера задач,и больше вообще ничего на скрине нет второй раз пэйнт мне написал про переполнение буфера Последний раз редактировалось Daarken; 23.09.2011 в 17:25. |
23.09.2011, 18:27 | #7 |
Новичок
Регистрация: 09.07.2010
Сообщений: 7
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
ооо спасибо большое!
добавил бегинпайнт и эндпайнт все стало просто замечательно! |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|