написал программу в 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"
подскажите пожалуйста в чем моя кривизна рук