Ciao a tutti !!!
ho scritto un programma semplice in C++, ma quando cambio l' immagine ( bitmap )
con una nuova , con le stesse dimensioni, il programma non me la acetta più.
Sapreste dirmi come risolvere il problema !!!
Grazieee !!!!
Ciao a tutti !!!
ho scritto un programma semplice in C++, ma quando cambio l' immagine ( bitmap )
con una nuova , con le stesse dimensioni, il programma non me la acetta più.
Sapreste dirmi come risolvere il problema !!!
Grazieee !!!!
se cambio l' immagine originale ( per esempio una pallina rossa ) con un'altra immagine delle stesse dimensioni ( pallina gialla ) con lo stesso nome dell' immagine originale, quando eseguo il programma, non mi carica l' immagine della pallina gialla.
Se non illustri COME carichi l'immagine e non mostri una porzione di codice difficilmente si può risolvere il tuo problema.
Ti sembra di avere dato le informazioni necessarie e sufficienti a dirti quale parte del tuo codice deve essere corretta e come?Originariamente inviato da ildanny
se cambio l' immagine originale ( per esempio una pallina rossa ) con un'altra immagine delle stesse dimensioni ( pallina gialla ) con lo stesso nome dell' immagine originale, quando eseguo il programma, non mi carica l' immagine della pallina gialla.
A me sembra che non hai neanche accennato al codice ... e quindi come pensi di ricevere un aiuto?
ok !! vi giro il codice !!!
Questo è il codice del file rsrc.rc che contiene i collegamenti delle bitmap
...
BALLBMP BITMAP "c:/prova/ball.bmp"
MASKBMP BITMAP "c:/prova/ballmask.bmp"
500 ICON MOVEABLE PURE LOADONCALL DISCARDABLE "Mainicon.ico"
...
Questa è la porzione di codice che richiama la bitmap
//main.c
#include <windows.h>
#pragma hdrstop
....
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_CREATE:
hbmBall = LoadBitmap(g_hInst, "BALLBMP");
hbmMask = LoadBitmap(g_hInst, "MASKBMP");
if(!hbmBall || !hbmMask){
MessageBox(hwnd, "Load of resources failed.", "Error",
MB_OK | MB_ICONEXCLAMATION);
return -1;
}
GetObject(hbmBall, sizeof(bm), &bm);
SetTimer(hwnd, idTimer1, nTimerDelay, NULL);
ballX = 0;
ballY = 0;
deltaX = deltaValue;
deltaY = deltaValue;
break;
case WM_TIMER:
if(hbmBall && hbmMask)
{
HDC hdcWindow;
hdcWindow = GetDC(hwnd);
EraseBall(hdcWindow);
UpdateBall(hwnd);
DrawBall(hdcWindow);
ReleaseDC(hwnd, hdcWindow);
}
break;
case WM_PAINT:
if(hbmBall && hbmMask)
{
PAINTSTRUCT ps;
HDC hdcWindow;
hdcWindow = BeginPaint(hwnd, &ps);
DrawBall(hdcWindow);
EndPaint(hwnd, &ps);
}
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
KillTimer(hwnd, idTimer1);
DeleteObject(hbmBall);
DeleteObject(hbmMask);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, Message, wParam, lParam);
}
return 0;
}
....
Scusa ma .... usi le "risorse" in Windows senza sapere come funzionano concettualmente?? Le risorse (immagini, icone, ecc... dichiarate nel file .rc) vengono fisicamente incorporate nell'eseguibile dal linker. Se vuoi cambiare immagine, fallo, poi linka nuovamente il tutto.Originariamente inviato da ildanny
Questo è il codice del file rsrc.rc che contiene i collegamenti delle bitmap
...
BALLBMP BITMAP "c:/prova/ball.bmp"
MASKBMP BITMAP "c:/prova/ballmask.bmp"
500 ICON MOVEABLE PURE LOADONCALL DISCARDABLE "Mainicon.ico"
...
hbmBall = LoadBitmap(g_hInst, "BALLBMP");
hbmMask = LoadBitmap(g_hInst, "MASKBMP");
Ma questo non è Animation Example presente negli esempi di dev cpp ?
Come dice andbin ti basta ricompilare tutto (anche se ha detto linkare)...
Experience is what you get when you don’t get what you want
Forse ho capito ... hai cambiato l'immagine della pallina ma non hai fatto
Rebuild All
Nel senso di "ricollegare" tutto il necessario .... non so come ha gestito la fase di build e con quale ambiente/compilatore. Se modifica solo una delle immagini referenziate nel file .rc, tecnicamente è sufficiente ricompilare il file di risorse e linkare il .res al resto.Originariamente inviato da Xaratroom
ti basta ricompilare tutto (anche se ha detto linkare)...