MasterShadows
Messages postés268Date d'inscriptionlundi 1 mars 2004StatutMembreDernière intervention19 avril 2012
-
18 août 2005 à 14:51
MasterShadows
Messages postés268Date d'inscriptionlundi 1 mars 2004StatutMembreDernière intervention19 avril 2012
-
18 août 2005 à 18:34
Salut à tous,
j'vais exposer brièvement le problème, dans le projet que j'effectue (il est écrit en MFC (pas trop le choix d'ailleurs)) il faut que je fasse une partie de prog qui ouvre un fichier avi, qu'il prenne et affiche les paramètres de l'avi en question et qu'enfin il "bitmap" chaque image du film.
Tout est fait, excepté le fait que la bitmap en question est rempli de vert.
Je vous envoie le code pour voir où est le bug
FICHIER RC :
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON "..\\res\\Cinema_Movie_Maker.ico"
IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "À propos de Cinema Movie Maker"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
LTEXT "Cinema Movie Maker Version 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX
LTEXT "Copyright (C) 2005",IDC_STATIC,40,25,119,8
DEFPUSHBUTTON "OK",IDOK,178,7,50,16,WS_GROUP
END
IDD_CINEMAMOVIEMAKER_DIALOG DIALOGEX 0, 0, 540, 460
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Cinema Movie Maker"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
PUSHBUTTON "Quitter le Programme",IDCANCEL,453,431,80,20
CONTROL "",IDC_TAB_CINEMA_MOVIE_MAKER,"SysTabControl32",0x0,7,7,526,420
END
IDD_FRAMES_TO_FILM DIALOGEX 0, 0, 310, 361
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
GROUPBOX "Images à Ajouter",IDC_STATIC1,7,7,296,158,BS_CENTER
EDITTEXT IDC_EDIT_IMAGES_A_AJOUTER,92,34,207,14,ES_AUTOHSCROLL | ES_READONLY
LISTBOX IDC_LIST_IMAGES_A_AJOUTER,15,49,284,101,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
GROUPBOX "Son à Ajouter",IDC_STATIC2,7,168,296,30,BS_CENTER
PUSHBUTTON "Parcourir",IDC_PARCOURIR_IMAGES,15,34,70,14
PUSHBUTTON "Parcourir",IDC_PARCOURIR_SON,15,178,70,14
EDITTEXT IDC_EDIT_SON_A_AJOUTER,92,178,207,14,ES_AUTOHSCROLL | ES_READONLY
GROUPBOX "Vidéo",IDC_STATIC3,7,200,296,56,BS_CENTER
PUSHBUTTON "Parcourir",IDC_PARCOURIR_VIDEO,15,209,70,14
EDITTEXT IDC_EDIT_VIDEO_A_CREER,92,209,207,14,ES_AUTOHSCROLL
CONTROL "Compresser la Vidéo",IDC_CHECKCOMPRESS_VIDEO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,81,10
LTEXT "Délai d'attente entre 2 images :",IDC_STATIC4,15,242,102,8
EDITTEXT IDC_EDIT_WAIT_BETWEEN_IMAGES,119,239,40,14,ES_CENTER | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "secondes.",IDC_STATIC5,164,242,34,8
PUSHBUTTON "Créer le Film",IDC_CREER_LE_FILM,79,261,150,14
LTEXT "",IDC_NB_IMAGES_LISTE,120,152,122,8
LTEXT "Nombre d'Images dans la liste :",IDC_STATIC6,15,152,100,8
LTEXT "Extension des images à inclure :",IDC_STATIC7,18,20,103,8
CONTROL "Bmp",IDC_RADIO_BMP,"Button",BS_AUTORADIOBUTTON,125,20,29,10
CONTROL "Jpg",IDC_RADIO_JPG,"Button",BS_AUTORADIOBUTTON,160,20,27,10
CONTROL "Png",IDC_RADIO_PNG,"Button",BS_AUTORADIOBUTTON,230,20,28,10
CONTROL "Jpeg",IDC_RADIO_JPEG,"Button",BS_AUTORADIOBUTTON,195,20,28,10
GROUPBOX "Progression Totale de la création du Film.",IDC_STATIC8,7,279,296,74,BS_CENTER
CONTROL "",IDC_PROGRESS_CREATION,"msctls_progress32",WS_BORDER,10,333,290,14
LTEXT "",IDC_INFO,10,321,290,8
LTEXT "",IDC_AVANCEMENT_IMG_EN_COURS,10,292,290,8
CONTROL "",IDC_PROGRESS_AJOUT_IMAGE,"msctls_progress32",WS_BORDER,10,302,290,14
END
IDD_CONVERT_FILM_TO_AVI DIALOGEX 0, 0, 354, 347
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
GROUPBOX "Vidéo d' Entrée.",IDC_STATIC9,7,7,340,26,BS_CENTER
PUSHBUTTON "Parcourir",IDC_PARCOURIR_VIDEO_ENTREE,15,15,50,14
EDITTEXT IDC_EDIT_VIDEO_ENTREE,68,15,270,14,ES_AUTOHSCROLL
GROUPBOX "Vidéo de Sortie.",IDC_STATIC10,7,37,340,26,BS_CENTER
EDITTEXT IDC_EDIT_VIDEO_SORTIE,15,45,320,14,ES_AUTOHSCROLL
GROUPBOX "Méthode de convertion de la Vidéo.",IDC_STATIC11,7,67,340,49,BS_CENTER
COMBOBOX IDC_COMPRESSEUR,16,86,321,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Choix d'un compresseur.",IDC_STATIC12,19,75,80,8
CONTROL "Enregistrer la bande sonore à l'interieure de la Vidéo.",IDC_CHECK_SAVE_AUDIO,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,104,185,10
CONTROL "",IDC_PROGRESS_CONVERTION,"msctls_progress32",WS_BORDER,7,149,340,14
PUSHBUTTON "Démarrer la Convertion.",IDC_START_COMPRESSION,132,118,90,14
LTEXT "",IDC_INFO_CONVERTION,7,138,340,8
GROUPBOX "Vérification des Vidéos.",IDC_STATIC13,7,168,340,172,BS_CENTER
CONTROL "",IDC_ECRAN,"Static",SS_BLACKRECT,15,180,325,131
PUSHBUTTON "Lire Fichier d'entrée.",IDC_PLAY_INPUT_FILE,15,316,90,20
PUSHBUTTON "Stopper la lecture",IDC_STOP,133,316,90,20
PUSHBUTTON "Lire Fichier de Sortie.",IDC_PLAY_OUTPUT_FILE,250,316,90,20
END
IDD_FILM_TO_FRAMES DIALOGEX 0, 0, 350, 181
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
GROUPBOX "Sélection du film à déompiler en images.",IDC_STATIC14,7,7,336,30,BS_CENTER
PUSHBUTTON "Parcourir",IDC_PARCOURIR_FILM_A_DECOMPILER,15,17,50,14
EDITTEXT IDC_EDIT_FILM_A_DECOMPILER,70,17,265,14,ES_AUTOHSCROLL
GROUPBOX "Informations sur la Vidéo.",IDC_STATIC15,7,40,336,73,BS_CENTER
GROUPBOX "Répertoire de destination des Images.",IDC_STATIC16,7,119,336,30,BS_CENTER
PUSHBUTTON "Parcourir",IDC_PARCOURIR_DEST_IMAGES,15,129,50,14
EDITTEXT IDC_EDIT_DEST_IMAGES,70,129,265,14,ES_AUTOHSCROLL
PUSHBUTTON "Extraction des Images",IDC_EXTRAIRE_IMAGES,135,154,80,20
LTEXT "Dimensions de la Vidéo :",IDC_STATIC17,15,50,78,8
LTEXT "0000",IDC_LARGEUR_VIDEO,96,50,16,8
LTEXT "x",IDC_STATIC18,116,50,8,8
LTEXT "0000",IDC_HAUTEUR_VIDEO,128,50,17,8
LTEXT "Nombre d' Images :",IDC_STATIC19,15,65,63,8
LTEXT "000000",IDC_NOMBRE_IMAGES,82,65,25,8
LTEXT "Taux de transfert maximal :",IDC_STATIC20,15,80,90,8
LTEXT "000000",IDC_TAUX_TRANSFERT,109,80,25,8
LTEXT "Bits par seconde.",IDC_STATIC21,139,80,56,8
LTEXT "Images par Seconde :",IDC_STATIC22,17,95,71,8
LTEXT "00",IDC_IMAGES_PAR_SECONDE,92,95,9,8
LTEXT "Flux Vidéo :",IDC_STATIC23,200,65,38,8
LTEXT "Aucun",IDC_FLUX_VIDEO,242,65,90,8
LTEXT "Type de Fichier :",IDC_STATIC24,200,80,54,8
LTEXT "Aucun",IDC_TYPE_FICHIER,258,80,75,8
END
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040c04e4"
BEGIN
VALUE "CompanyName", "SHADOWS Productions"
VALUE "FileDescription", "Générateur de Film"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "Cinema Movie Maker.exe"
VALUE "LegalCopyright", "(c) Shadows Productions. Tous droits réservés."
VALUE "OriginalFilename", "Cinema Movie Maker.exe"
VALUE "ProductName", "Cinema Movie Maker"
VALUE "ProductVersion", "1.0.0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x40c, 1252
END
END
1 RT_MANIFEST "C:\\Documents and Settings\\JANISZEWSKI\\Mes documents\\Visual Studio 2005\\Projects\\Cinema Movie Maker\\res\\Cinema Movie Maker.exe.manifest"
STRINGTABLE
BEGIN
IDS_ABOUTBOX "&À propos de Cinema Movie Maker..."
END
#endif // French (France) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
LANGUAGE 12, 1
#pragma code_page(1252)
#include "res\CinemaMovieMaker.rc2" // ressources non modifiées par Microsoft Visual C++
#include "afxres.rc" // Composants standard
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
LPCTSTR lpszPath = pDlg->m_lpszInitialPath;
TCHAR szTemp[MAX_PATH];
if(lpszPath==NULL)
{
::GetCurrentDirectory(MAX_PATH, szTemp );
lpszPath = szTemp;
}
// WParam is TRUE since you are passing a path.
// It would be FALSE if you were passing a pidl.
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,
(LPARAM)lpszPath);
break;
}
case BFFM_SELCHANGED:
{
char szSelection[MAX_PATH];
if(!::SHGetPathFromIDList((LPITEMIDLIST)lParam, szSelection) ||
szSelection[1]!=':')
{
szSelection[0] = '\0';
::SendMessage(hwnd, BFFM_ENABLEOK, 0, FALSE);
}
else
{
::SendMessage(hwnd, BFFM_ENABLEOK, 0, TRUE);
}
::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szSelection);
::SetWindowText(::GetDlgItem(hwnd, IDC_NEW_EDIT_PATH), szSelection);
break;
}
default:
break;
}
return 0;
}
int CPathDialog::DoModal()
{
/////////////////////////////////////////////////////////
TCHAR szPathTemp[MAX_PATH];
m_bi.lpfn = BrowseCallbackProc; // address of callback function
m_bi.lParam = (LPARAM)this; // pass address of object to callback function
m_bi.pszDisplayName = szPathTemp;
LPITEMIDLIST pidl;
LPMALLOC pMalloc;
int iResult=-1;
if(SUCCEEDED(SHGetMalloc(&pMalloc)))
{
// if((m_pParentWnd!=NULL) && m_pParentWnd->IsWindowEnabled())
// {
// m_pParentWnd->EnableWindow(FALSE);
// m_bParentDisabled = TRUE;
// }
m_bGetSuccess = FALSE;
pidl = SHBrowseForFolder(&m_bi);
if (pidl!=NULL)
{
//not need do this because OnOK function did
//bSucceeded = SHGetPathFromIDList(pidl, m_szPathName);
// In C++:
pMalloc->Free(pidl);
//In C:
//pMalloc->lpVtbl->Free(pMalloc,pidl);
//pMalloc->lpVtbl->Release(pMalloc);
}
if(m_bGetSuccess)
{
iResult = IDOK;
}
pMalloc->Release();
}
int nLen = _tcslen(lpFileName);
if(nLen<=0)
{
return FALSE;
}
//check first char
switch(lpFileName[0])
{
case _T('.'):
case _T(' '):
case _T('\t'):
return FALSE;
}
//check last char
switch(lpFileName[nLen-1])
{
case _T('.'):
case _T(' '):
case _T('\t'):
return FALSE;
}
//check all
int i=0;
while(lpFileName[i]!=0)
{
switch(lpFileName[i])
{
case _T('\\'):
case _T('/'):
case _T(':'):
case _T('*'):
case _T('?'):
case _T('"'):
case _T('<'):
case _T('>'):
case _T('|'):
return FALSE;
}
i++;
}
return TRUE;
}
const TCHAR c_FolderDoesNotExist[] = _T(
"Le répertoire:\n\n"
"%s\n\n"
"n'existe pas. Voulez vous le créer ?");
const TCHAR c_szErrInvalidPath[] = _T(
"Le répertoire:"
"\n\n"
"%s\n\n"
"est invalide. Recommencez.");
const TCHAR c_szErrCreatePath[] = _T(
"Le répertoire:"
"\n\n"
"%s"
"\n\nne peut être créer.");
//return -1: user break;
//return 0: no error
//return 1: lpPath is invalid
//return 2: can not create lpPath
int CPathDialog::MakeSurePathExists(LPCTSTR lpPath)
{
CString strMsg;
int iRet;
try
{
//validate path
iRet=Touch(lpPath, TRUE);
if(iRet!=0)
{
throw iRet;
}
return 0;
}
catch(int nErrCode)
{
switch(nErrCode)
{
case 1:
strMsg.Format(c_szErrInvalidPath, lpPath);
break;
case 2:
default:
strMsg.Format(c_szErrCreatePath, lpPath);
break;
}
AfxMessageBox(strMsg, MB_OK|MB_ICONEXCLAMATION);
}
return iRet;
}
//return 0: no error
//return 1: lpPath is invalid
//return 2: lpPath can not be created(bValidate==FALSE)
int CPathDialog::Touch(LPCTSTR lpPath, BOOL bValidate)
{
if(lpPath==NULL)
{
return 1;
}
TCHAR szPath[MAX_PATH];
_tcscpy(szPath, lpPath);
int nLen = _tcslen(szPath);
switch(nCtlColor)
{
case CTLCOLOR_DLG:
return m_whitebrush;
case CTLCOLOR_STATIC:
{
switch(pWnd->GetDlgCtrlID())
{
case IDC_STATIC14:
case IDC_STATIC15:
case IDC_STATIC16:
case IDC_STATIC17:
case IDC_STATIC18:
case IDC_STATIC19:
case IDC_STATIC20:
case IDC_STATIC21:
case IDC_STATIC22:
case IDC_STATIC23:
case IDC_STATIC24:
{
pDC->SetTextColor(RGB(0,255,255));
hbr = (HBRUSH)m_whitebrush;
}
break;
case IDC_LARGEUR_VIDEO:
case IDC_HAUTEUR_VIDEO:
case IDC_TAUX_TRANSFERT:
case IDC_FLUX_VIDEO:
case IDC_TYPE_FICHIER:
case IDC_NOMBRE_IMAGES:
case IDC_IMAGES_PAR_SECONDE:
{
pDC->SetTextColor(RGB(255,0,0));
hbr = (HBRUSH)m_whitebrush;
}
break;
void CFilm2Frames::OnParcourirFolderFrames()
{
CString szPath;
CString szTitle = _T("Choisissez le dossier de destination qui recevra les images du film.");
CString szCaption = _T("Répertoire de décompilation du Film");
// boîte de dialogue CCinemaMovieMakerDlg
class CCinemaMovieMakerDlg : public CDialog
{
// Construction
public:
CCinemaMovieMakerDlg(CWnd* pParent = NULL); // constructeur standard
// Données de boîte de dialogue
enum { IDD = IDD_CINEMAMOVIEMAKER_DIALOG };
CTabCtrl m_tabctrl;
protected:
virtual void DoDataExchange(CDataExchange* pDX); // Prise en charge de DDX/DDV
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
// Implémentation
protected:
HICON m_hIcon;
// Fonctions générées de la table des messages
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
// Définir l'icône de cette boîte de dialogue. L'infrastructure effectue cela automatiquement
// lorsque la fenêtre principale de l'application n'est pas une boîte de dialogue
SetIcon(m_hIcon, TRUE); // Définir une grande icône
SetIcon(m_hIcon, FALSE); // Définir une petite icône
// TODO : ajoutez ici une initialisation supplémentaire
m_tabctrl.DeleteAllItems();
m_tabctrl.InsertItem(0, "Créer un Film.");
m_tabctrl.InsertItem(1, "Convertir un Film.");
m_tabctrl.InsertItem(2, "Décompiler une Vidéo.");
/* m_pCF2F = new CFrames2Film(this);
m_pCF2F->Create(IDD_FRAMES_TO_FILM, this);
m_pCF2F->ShowWindow(SW_SHOW);
m_pConvert = new CConvertisseur(this);
m_pConvert->Create(IDD_CONVERT_FILM_TO_AVI, this);
m_pConvert->ShowWindow(SW_HIDE);*/
// Si vous ajoutez un bouton Réduire à votre boîte de dialogue, vous devez utiliser le code ci-dessous
// pour dessiner l'icône. Pour les applications MFC utilisant le modèle Document/Vue,
// cela est fait automatiquement par l'infrastructure.
void CCinemaMovieMakerDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // contexte de périphérique pour la peinture
// Centrer l'icône dans le rectangle client
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Le système appelle cette fonction pour obtenir le curseur à afficher lorsque l'utilisateur fait glisser
// la fenêtre réduite.
HCURSOR CCinemaMovieMakerDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
Voilà, y'a plus qu'créer le projet CinemaMovieMaker en utilisant le MFC, si je vous ai donné tout ce code c'est pour bien évidemment voir de quel bug il s'agit, ce sera peut être plus simple de le trouver en construisant l'exe que de vous donner la partie du code où il y'a le problème...
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008 18 août 2005 à 15:04
1358 lignes de code à débugger pour toi... il faut juste quelques heures pour digérer les pages. Tu crois pas que c'est un peu exagéré (juste un peu) ?
On est sur un forum et ce genre de messages personne ne prendra le temps de le lire, parcequ'on à autre chose à faire et on préfère aider les gens qui ont déjà cherché un minimum avant de poser leur problème, d'autant plus qu'à juger la taille du source et du problème mis en avant tu ne doit pas être débutant ! Tu veux peut-être que l'on coupe aussi ta viande avant de la manger ?
MasterShadows
Messages postés268Date d'inscriptionlundi 1 mars 2004StatutMembreDernière intervention19 avril 201212 18 août 2005 à 15:09
Non, non t'as pas saisi ce que j'ai fait : je sais qu'il y'a un bug dans l'une de ces lignes (au niveau de la bitmap) mais j'arrive pas à le trouver (3 semaines que je cherche et y'a pas moyen) :
mais si j'ai mis toutes ces lignes de codes, c'est pour que ceux qui veulent compiler le code pour bien voir le problème ne se cassent pas la tête à réécrire tout un programme avec ce le bug qu'il y' au dessus
MasterShadows
Messages postés268Date d'inscriptionlundi 1 mars 2004StatutMembreDernière intervention19 avril 201212 18 août 2005 à 17:16
Désolé, mon pc à claquer une quiche.
J'recommence le truc :
Ah, donc l'erreur serait une variable qui ne s'initialise pas correctement ???
Honnêtement, je pensais que l'erreur venait de la variable memBitmapInfo, car en fonction de la valeur que je lui fixe, j'obtient des bitmaps différentes (vertes, bleues, striés de moults couleurs...)
Bon, j'ai plus qu'à faire une batterie de test parce que VS2005 béta 2, ben il aime pas débuggué avec une platforme 64 bits...
Bon, j'y retourne
Merci à toi xterminhate de m'avoir dit que c'était une variable mal initialisée, parce que franchement, je m'étais demandé si le code entier gérant la bitmap était faux (car c'est la première fois que je traite la bitmap comme ça, alors forcément, même en ayant fait moultes recherches, je ne pensais pas à une bête variable mal initialisé, mais à une erreur de structuration de code complète..)
J'ai dit une partie car maintenant, j'ai bien la bitmap voulu à part que la bitmap est scindé en son milieu et la partie droite de la bitmap se trouve à gauche et la partie de gauche se trouve à sa droite
MasterShadows
Messages postés268Date d'inscriptionlundi 1 mars 2004StatutMembreDernière intervention19 avril 201212 18 août 2005 à 18:34
Meme si ta réponse était ironique, (sans dec, j'pensais que t'étais sérieux), néanmoins j'ai trouvé l'erreur, il ne me reste donc qu'à trouvé pour j'ai cette p*** d'erreur d'offset sur les images.
Donc en fait l'erreur est sur ce petit bout de programme :
bool CFilm2Frames::CreateBMPFromDIBPointer(LPBYTE pDIB, int iImg)
{
ASSERT(pDIB != NULL); // Il faut impérativement que le pointeur ne soit pas nul.
BITMAPINFOHEADER bih; // déplaçons le bloc mémoire d'un secteur à un autre
RtlMoveMemory(&bih.biSize, pDIB, sizeof(BITMAPINFOHEADER));
// Maintenant, cherchons le nombre de bits de la bitmap
if(bih.biSizeImage < 1)
{
return false;
}
BYTE* bits = new BYTE[bih.biSizeImage];
RtlMoveMemory(bits, pDIB + sizeof(BITMAPINFOHEADER), bih.biSizeImage);