Noobinho one again!!
Bonjour tout le monde!
Je serais très reconnaissant si vous pouviez m'aiguiller pour ce programme.
Je souhaite iconiser mon application mais je dois dire que je galère.
Je me suis aidé de la page suivante :
[ Lien ] sans succès.
Mes questions sont les suivantes:
Est-il nécessaire de générer un ico et si oui ou faut-il le placer?
Pourquoi-faut il en générer 2? Est-ce une pour l'application et une pour la fenêtre en haut à gauche?
Merci de me donner un chti coup de main.
Voici le programme qui me pose problème:
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wc;
HMENU hMenu, hSousMenu;
hinst = hinstance;
HICON hIcon1,hIcon2;
int Ret;
// Voici la partie du programme que j'ai tenté de copier et qui me pose problème.
hwnd = (HWND)CreateDialog(hinstance, MAKEINTRESOURCE(IDD_MAINDIALOG), NULL, MainWndProc);
hIcon1 = LoadIcon(hinstance,MAKEINTRESOURCE(IDI_MAINICON));
hIcon2 = LoadIcon(hinstance,MAKEINTRESOURCE(IDI_MAINICON));
SendMessage(hwnd,WM_SETICON,(WPARAM)ICON_SMALL,(LPARAM)hIcon1);
SendMessage(hwnd,WM_SETICON,(WPARAM)ICON_BIG,(LPARAM)hIcon2);
ShowWindow(hwnd,MainWndProc);
wc.style = 0 ;
wc.lpfnWndProc = MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hinstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = "MaWinClass";;
if(!RegisterClass(&wc)) return FALSE;
hSousMenu = CreateMenu();
AppendMenu(hSousMenu, MF_STRING, IDM_OPEN, "Générer les images acoustiques à partir d'un fichier VTK");
AppendMenu(hSousMenu, MF_SEPARATOR, 0, NULL);
AppendMenu(hSousMenu, MF_STRING, IDM_QUIT, "Quitter");
hMenu = CreateMenu();
AppendMenu(hMenu,MF_POPUP,(UINT)hSousMenu,"Fichier");
hwnd = CreateWindow("MaWinClass", "SCAT Image Processing LaMIPS/NXP 2008", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 640, 300, NULL, hMenu, hinstance, NULL);
if (!hwnd) return FALSE;
ShowWindow(hwnd, nCmdShow);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static HWND hEdit;
static BOOL EditNotChg = TRUE;
FILE *fp0, *fp1, *fp2;
FILE *tmpf= 0; //Opened temp. file
char name[255];
char ext[7], mode[7];
unsigned int i, j, k;
unsigned int imax, jmax, kmax;
unsigned char pix;
char *vtk, *vtkPtr;
switch (uMsg)
{
case WM_CREATE:
{
HFONT hFont;
hEdit = CreateWindow("edit","Pour générer les images acoustiques de votre échantillon : Fichier -> Générer les images acoustiques à partir d'un fichier VTK", WS_CHILD | WS_VISIBLE |ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,0, 0, 0, 0, hwnd, NULL, hinst, NULL);
hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
SendMessage(hEdit,WM_SETFONT,(UINT)hFont,TRUE);
SendMessage(hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(5, 5));
return 0;
}
case WM_CLOSE:
return 0;
case WM_COMMAND:
if(LOWORD(wParam) == IDM_OPEN)
{
HFONT hFont;
OPENFILENAME ofn;
CHAR szFile[MAX_PATH]={0};
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter ="Fichier VTK\0*.vtk\0";
ofn.nFilterIndex = 1;
ofn.Flags =OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&ofn)==TRUE)
{
HFONT hFont;
hEdit = CreateWindow("edit","Traitement en cours...", WS_CHILD | WS_VISIBLE |ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,0, 0, 0, 0, hwnd, NULL, hinst, NULL);
hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
SendMessage(hEdit,WM_SETFONT,(UINT)hFont,TRUE);
SendMessage(hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(5, 5));
//SetDlgItemText()
i = 0;
while (*(szFile + i) != 0)
{
*(name + i) = *(szFile + i);
++i;
}
*(name + i) = 0; // terminateur par défaut
while (i > 0)
{
--i;
if (*(name + i) == '\\') break; // pas d'extension
if (*(name + i) == '/') break; // pas d'extension
if (*(name + i) == '.')
{
*(name + i) = 0; // extension supprimée
break;
}
}
//Ouverture d'un fichier temp.
tmpf= scatOpenTempFile();
//Ouverture des fichiers vtk
strcpy(ext,".vtk"); strcpy(mode,"rb");
fp0= scatOpenFile(name,ext,mode);
strcpy(ext,"X.vtk"); strcpy(mode,"wb+");
fp1= scatOpenFile(name,ext,mode);
strcpy(ext,".xls"); strcpy(mode,"wa");
fp2= scatOpenFile(name,ext,mode);
//Affichage de l'entete du fichier VTK
scatHeaderVTK(fp0, fp1, &imax, &jmax, &kmax);
//Allocation memoire dynamique
vtkPtr= scatMemAllocVTK(imax, jmax, kmax);
vtk= vtkPtr;
//Lecture des echos et reorganisation des data
scatReadFileVTK(imax,jmax,kmax,fp0,vtk);
//Traitement des data: lissage + segmentation
vtk= vtkPtr;
scatMainProcessing(imax,jmax,kmax,tmpf,fp2,vtk,name);
fclose(fp0);
fclose(fp2);
fclose(fp1);
fclose(tmpf);
exit(0);
//
//Remise du fichier vtk dans l'ordre initial
//Lecture des data
vtk= vtkPtr;
rewind(tmpf);
for(i=0;i<imax;i++){
for(j=0;j<jmax;j++){
for(k= 0 ; k<kmax; k++) {
fread(&pix,sizeof(unsigned char),1,tmpf);
*(vtk+(k*(jmax*imax)+j*imax+i))= pix;
}
}
}
//Reecriture
for(k=0;k<kmax;k++)
for(j=0;j<jmax;j++)
for(i= 0; i<imax; i++, vtk++)
fwrite(vtk,sizeof(unsigned char),1,fp1);
fclose(tmpf);
fclose(fp1);
free(vtkPtr);
}
}
if(LOWORD(wParam) == IDM_QUIT) PostMessage(hwnd, WM_CLOSE,0,0);
if(HIWORD(wParam) == EN_CHANGE) EditNotChg = FALSE;
return 0;
case WM_SIZE:
MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}
Et les erreurs générées:
h:\adrien\gui2\parcourir.cpp(80) : error C2065: 'IDD_MAINDIALOG' : undeclared identifier
h:\adrien\gui2\parcourir.cpp(80) : error C2664: 'CreateDialogParamA' : cannot convert parameter 4 from 'long (struct HWND__ *,unsigned int,unsigned int,long)' to 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
None of the functions with this name in scope match the target type
h:\adrien\gui2\parcourir.cpp(82) : error C2065: 'IDI_MAINICON' : undeclared identifier
h:\adrien\gui2\parcourir.cpp(88) : error C2664: 'ShowWindow' : cannot convert parameter 2 from 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
h:\adrien\gui2\parcourir.cpp(1031) : warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
Error executing cl.exe.
gui2.exe - 4 error(s), 1 warning(s)
Merci d'avance