Design de fenêtre et autre.
Le
Maxime
Bonjour à tous,
Je suis actuellement en train de développer une GUI à base de l'API
WIN32. Et je suis confronté à plusieurs problèmes :
1-Je n'arrive pas à trouver une bibliothèque permettant d'afficher les
bmp ET les jpgs, tga, gif (éventuellement les lire) et images de ce
genre;
2-Je n'arrive pas à faire fonctionner l'implémentation des fonctions
de retournement d'images, en bref, de modifications d'images;
3-Je n'arrive pas à trouver une fonction permettant de changer le
design d'une fenêtre, à savoir par exemple son fond, actuellement elle
ressemble à une fenêtre Windows95;
4-Je n'arrive pas non plus à trouver de fonction permettant de changer
le design d'un bouton, ils font plus du type de Windows95
actuellement;
5-Dans mon switch qui analyse les messages provenant de l'utilisateur,
lorsque je fais plusieurs if pour savoir -via le lParam- de quel
bouton vient le message, il ne se passe rien;
6-Je n'arrive pas non plus à faire fonctionner les TreeView, notamment
à cause de ressources manquantes pour les images (plus, moins,
dossier).
Je sais que je demande beaucoup et qu'une seule personne ne saura pas
nécessairement répondre à toutes mes questions, mais merci à tous c=
eux
qui voudront bien apporter leur pierre ;).
Je suis actuellement en train de développer une GUI à base de l'API
WIN32. Et je suis confronté à plusieurs problèmes :
1-Je n'arrive pas à trouver une bibliothèque permettant d'afficher les
bmp ET les jpgs, tga, gif (éventuellement les lire) et images de ce
genre;
2-Je n'arrive pas à faire fonctionner l'implémentation des fonctions
de retournement d'images, en bref, de modifications d'images;
3-Je n'arrive pas à trouver une fonction permettant de changer le
design d'une fenêtre, à savoir par exemple son fond, actuellement elle
ressemble à une fenêtre Windows95;
4-Je n'arrive pas non plus à trouver de fonction permettant de changer
le design d'un bouton, ils font plus du type de Windows95
actuellement;
5-Dans mon switch qui analyse les messages provenant de l'utilisateur,
lorsque je fais plusieurs if pour savoir -via le lParam- de quel
bouton vient le message, il ne se passe rien;
6-Je n'arrive pas non plus à faire fonctionner les TreeView, notamment
à cause de ressources manquantes pour les images (plus, moins,
dossier).
Je sais que je demande beaucoup et qu'une seule personne ne saura pas
nécessairement répondre à toutes mes questions, mais merci à tous c=
eux
qui voudront bien apporter leur pierre ;).

Poser une question


GDI+ gère tout.
Il y a d'autres méthodes classiques comme OleLoadPicture() (KB218972)
ou par le Shell
Il faut utiliser un Manifest :
http://msdn.microsoft.com/en-us/lib...97646.aspx
Pas très clair, comme la 5....
Les TreeViews sont bien détaillés dans MSDN :
http://msdn.microsoft.com/en-us/library/bb773409(VS.85).aspx
ou Control Spy pour tous les C.Controls
1-Mais GDI+ est quelque chose d'en dehors de l'API WIN32, non?
3- et 4-Celà me parait un peu compliqué.... saurais-tu me l'expliquer?
6-Les ressources manquantes sont les images de plus et de moins lors
de la navigation les dossiers, de même que l'image de dossier est pour
représenter les dossiers lors de la navigation dans le TreeView, il
manque ces images et il faudrait faire un fichier resources, mais je
ne sais pas comment le faire. De plus, je me suis initié aux TreeView
avec msdn, et je n'y ai donc pas trouvé mon bonheur, même en copiant/
collant leur code.
5-Il s'agit de :
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM
wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the
message queue */
break;
case WM_COMMAND:
if (BN_CLICKED && (GET_LPARAM(BN_CLICKED, lParam) ==
HwndButtonUpdate))
{
miseajour();
}
if (BN_CLICKED && (GET_LPARAM(BN_CLICKED, lParam) ==
HwndButtonEmpty))
{
printf("You crazy!");
}
if (BN_CLICKED && (GET_LPARAM(BN_CLICKED, lParam) ==
HwndButtonCredits))
{
// CreateWindowEx(0, szClassName, "Familly Shorter",
WS_OVERLAPPEDWINDOW, 50, 50, 50, 200, HWND_DESKTOP, NULL,
hThisInstance, NULL);
}
if (BN_CLICKED && (GET_LPARAM(BN_CLICKED, lParam) ==
HwndButtonExit))
{
PostQuitMessage (0);
}
break;
default: /* for messages that we don't
deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
Merci pour les réponses que tu m'a déjà données.
Non, c'est inclus en natif (l'Explorer l'utilise souvent..)
http://msdn.microsoft.com/en-us/library/ms533802(VS.85).aspx
Il n'y a quasiment rien à faire : juste les étapes 1, 2 et 3 de
"To create a manifest and enable your application to use visual
styles."
pour créer le fichier NomApp.exe.manifest comme indiqué, dans le
répertoire de l'exécutable, si on ne veut pas le mettre en ressources.
Toutes ces ressources sont incluses dans Windows, notamment par
l'ImageList Système qu'on récupère par SHGetFileInfo()
Mais pour le +/-, c'est automatique par le style TVS_HASBUTTONS
Il faut faire :
if (HIWORD (wParam) == BN_CLICKED)
{
//....
}
Hum... comment linker à la librairie et utiliser InitCommonControls()?
De plus, j'utilise ImageList, mais il me renvoie le problème susdit :
/*BOOL InitTreeViewImageLists(HWND hwndTV)
{
HIMAGELIST himl; // handle to image list
HBITMAP hbmp; // handle to bitmap
// Create the image list.
if ((himl = ImageList_Create(CX_BITMAP,
CY_BITMAP,
FALSE,
NUM_BITMAPS, 0)) == NULL)
return FALSE;
// Add the open file, closed file, and document bitmaps.
hbmp = LoadBitmap(hinst, MAKEINTRESOURCE(IDB_OPEN_FILE));
g_nOpen = ImageList_Add(himl, hbmp, (HBITMAP)NULL);
DeleteObject(hbmp);
hbmp = LoadBitmap(hinst, MAKEINTRESOURCE(IDB_CLOSED_FILE));
g_nClosed = ImageList_Add(himl, hbmp, (HBITMAP)NULL);
DeleteObject(hbmp);
hbmp = LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_DOCUMENT));
g_nDocument = ImageList_Add(himl, hbmp, (HBITMAP)NULL);
DeleteObject(hbmp);
// Fail if not all of the images were added.
if (ImageList_GetImageCount(himl) < 3)
return FALSE;
// Associate the image list with the tree-view control.
TreeView_SetImageList(hwndTV, himl, TVSIL_NORMAL);
return TRUE;
}