Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
IMAGES SUR DIALOGBOX PAR DLL (WIN32)
Information sur la source
Description
Les images sur dialogbox changent grace a un timer. On alterne JPG, GIF et BMP. Une DLL perso de 4 Ko donne un HBITMAP avec les donnees du fichier. Ces donnees pourraient etre en ressource aussi bien, serait idem. #include "bnJpg32.h" suffit pour se servir de la DLL.
Source
- #include <windows.h>
- #include "resource.h"
- #include "bnJpg32.h"
-
- HBITMAP hbmp;
- int cxDib, cyDib, idximg;
- char *szimages[3] = {"Chat.jpg","Evol.gif","Verdi.bmp"};
-
- void __stdcall ImgLoad()
- {
- HANDLE hfl;
- DWORD lenfl, val;
- HANDLE hheap;
- BYTE *pmem;
- BITMAP bmp;
- if(hbmp) {DeleteObject(hbmp); hbmp = 0;}
- hfl = CreateFile(szimages[idximg], GENERIC_READ, 0, 0, OPEN_EXISTING,
- FILE_FLAG_SEQUENTIAL_SCAN, 0);
- if(hfl == INVALID_HANDLE_VALUE) return;
- lenfl = GetFileSize(hfl, 0);
- hheap = GetProcessHeap();
- pmem = (BYTE*) HeapAlloc(hheap, 0, lenfl);
- if(pmem) ReadFile(hfl, pmem, lenfl, &val, 0);
- CloseHandle(hfl);
- if(!pmem) return;
- hbmp = bnBmpFromMemory(pmem, lenfl);
- HeapFree(hheap, 0, pmem);
- if(hbmp) {
- if(GetObject(hbmp, sizeof(bmp), &bmp)) {
- cxDib = bmp.bmWidth; cyDib = bmp.bmHeight;
- }
- }
- }
-
- void __stdcall onPaint(HWND hdlg)
- {
- PAINTSTRUCT ps;
- HDC hdc, memdc;
- RECT rct;
- hdc = BeginPaint(hdlg, &ps);
- if(hbmp) {
- GetClientRect(hdlg, &rct);
- memdc = CreateCompatibleDC(hdc);
- SelectObject(memdc, hbmp);
- StretchBlt(hdc, 0, 0, rct.right, rct.bottom, memdc, 0, 0, cxDib, cyDib, SRCCOPY);
- DeleteDC(memdc);
- }
- EndPaint(hdlg, &ps);
- }
-
- BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
- {
- switch(mssg) {
- case WM_PAINT:
- onPaint(hdlg);
- break;
- case WM_TIMER:
- if(++idximg > 2) idximg = 0;
- ImgLoad();
- InvalidateRect(hdlg, 0, 0);
- break;
- case WM_INITDIALOG:
- SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION));
- idximg = 0;
- ImgLoad();
- SetTimer(hdlg, 1, 1500, 0);
- return 1;
- case WM_COMMAND:
- if(wParam == IDCANCEL) {KillTimer(hdlg, 1); EndDialog(hdlg, 0);}
- }
- return 0;
- }
-
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
- {
- DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_APP), 0, AppDlgProc, 0);
- return 0;
- }
#include <windows.h>
#include "resource.h"
#include "bnJpg32.h"
HBITMAP hbmp;
int cxDib, cyDib, idximg;
char *szimages[3] = {"Chat.jpg","Evol.gif","Verdi.bmp"};
void __stdcall ImgLoad()
{
HANDLE hfl;
DWORD lenfl, val;
HANDLE hheap;
BYTE *pmem;
BITMAP bmp;
if(hbmp) {DeleteObject(hbmp); hbmp = 0;}
hfl = CreateFile(szimages[idximg], GENERIC_READ, 0, 0, OPEN_EXISTING,
FILE_FLAG_SEQUENTIAL_SCAN, 0);
if(hfl == INVALID_HANDLE_VALUE) return;
lenfl = GetFileSize(hfl, 0);
hheap = GetProcessHeap();
pmem = (BYTE*) HeapAlloc(hheap, 0, lenfl);
if(pmem) ReadFile(hfl, pmem, lenfl, &val, 0);
CloseHandle(hfl);
if(!pmem) return;
hbmp = bnBmpFromMemory(pmem, lenfl);
HeapFree(hheap, 0, pmem);
if(hbmp) {
if(GetObject(hbmp, sizeof(bmp), &bmp)) {
cxDib = bmp.bmWidth; cyDib = bmp.bmHeight;
}
}
}
void __stdcall onPaint(HWND hdlg)
{
PAINTSTRUCT ps;
HDC hdc, memdc;
RECT rct;
hdc = BeginPaint(hdlg, &ps);
if(hbmp) {
GetClientRect(hdlg, &rct);
memdc = CreateCompatibleDC(hdc);
SelectObject(memdc, hbmp);
StretchBlt(hdc, 0, 0, rct.right, rct.bottom, memdc, 0, 0, cxDib, cyDib, SRCCOPY);
DeleteDC(memdc);
}
EndPaint(hdlg, &ps);
}
BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
switch(mssg) {
case WM_PAINT:
onPaint(hdlg);
break;
case WM_TIMER:
if(++idximg > 2) idximg = 0;
ImgLoad();
InvalidateRect(hdlg, 0, 0);
break;
case WM_INITDIALOG:
SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION));
idximg = 0;
ImgLoad();
SetTimer(hdlg, 1, 1500, 0);
return 1;
case WM_COMMAND:
if(wParam == IDCANCEL) {KillTimer(hdlg, 1); EndDialog(hdlg, 0);}
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_APP), 0, AppDlgProc, 0);
return 0;
}
Conclusion
Le zip contient le projet complet au format VS 2003.
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Sources de la même categorie
Commentaires
|
CalendriCode
| | | L | M | M | J | V | S | D |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | | | | | |
|
|