Problème de création d'une progressBar

Résolu
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 - 20 sept. 2008 à 13:16
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 - 29 sept. 2008 à 18:14
Bonjour, ayant eu des problèmes sur un programme pour faire avancer une progressbar j'ai voulu faire un programme de test, mais problème dans celui ci je n'arrive pas à créer la barre de progression.
Le code d'erreur est 1407 (impossible de trouver la classe de fenetre).
Je ne vois pas ce que j'aurais pu oublier.
Mon code

#include <windows.h>
#include <stdio.h>

#include "main.h"
#include <commctrl.h>

/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)

{

MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */

/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);

/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;

/* The class is registered, let's create the program*/
Fenetre = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);

Label1 = CreateWindowEx(0, "STATIC", "text", WS_VISIBLE|WS_CHILD, 5, 2,
52, 13, Fenetre, (HMENU)ID_LABEL1, hThisInstance, NULL);

Boutton1 = CreateWindowEx(0,"BUTTON","Valider", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_NOTIFY|BS_TEXT, 10,15,70,25,Fenetre,
(HMENU)ID_BOUTTON1, hThisInstance,NULL);

if ((ProgressbarCreateWindowEx(CS_DBLCLKS, PROGRESS_CLASS, NULL, WS_CHILD | WS_VISIBLE | PBS_SMOOTH , 2, 350, 313, 20, Fenetre,(HMENU)ID_PROGRESSBAR, hThisInstance, NULL)) NULL)
{
DWORD err = GetLastError();
char code[256];
sprintf(code,"%i",err);
MessageBox(Fenetre,code,"Erreur",MB_OK);
}
....

7 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
20 sept. 2008 à 13:52
tu as oublié d'appeler <name>InitCommonControlsEx.</name><link href="../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
]]></style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet" />

<xml id="_topicdata" pagetype="function" proj="platsdk" name="InitCommonControlsEx" pubpath="/platform/commctls/common/functions/initcommoncontrolsex.htm"><!-- topic data --><root></root></xml>

<xml xmlns=""><mshelp:keyword index="A" term="_win32_InitCommonControlsEx"></mshelp:keyword><mshelp:keyword index="A" term="_win32_InitCommonControlsEx_cpp"></mshelp:keyword><mshelp:toctitle title="InitCommonControlsEx Function"></mshelp:toctitle><mshelp:rltitle title="InitCommonControlsEx Function ()"></mshelp:rltitle><mshelp:keyword index="F" term="InitCommonControlsEx"></mshelp:keyword><mshelp:keyword index="K" term="InitCommonControlsEx"></mshelp:keyword><mshelp:attr name="TopicType" value="kbRef"></mshelp:attr><mshelp:attr name="Locale" value="kbEnglish"></mshelp:attr><mshelp:attr name="DevLang" value="C++"></mshelp:attr><mshelp:attr name="Technology" value="Controls"></mshelp:attr><mshelp:attr name="TechnologyVers" value="kbControls"></mshelp:attr><mshelp:attr name="DocSet" value="WCSDK"></mshelp:attr><mshelp:attr name="DocSet" value="LHSDK"></mshelp:attr><mshelp:attr name="DocSet" value="PSDK"></mshelp:attr><mshelp:attr name="CommunityContent" value="1"></mshelp:attr><mshelp:attr name="TargetOS" value="Windows"></mshelp:attr><mshelp:attr name="TopicType" value="apiref"></mshelp:attr><mshelp:attr name="APIName" value="InitCommonControlsEx"></mshelp:attr><mshelp:attr name="APIType" value="DllExport"></mshelp:attr><mshelp:attr name="APILocation" value="comctl32.dll"></mshelp:attr><mshelp:attr name="TopicType" value="kbSyntax"></mshelp:attr></xml>
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
20 sept. 2008 à 13:54
Salut,
Mets InitCommonControls() ou InitCommonControlsEx() au début de ton WinMain. Tu peux également charger dynamiquement comctl32.dll en mettant au début du WinMain:
HINSTANCE hCmLib= LoadLibrary("comctl32.dll");
puis à sa fin:
FreeLibrary(hCmLib);
3
jeffy131 Messages postés 123 Date d'inscription samedi 14 juillet 2007 Statut Membre Dernière intervention 29 mars 2009 1
20 sept. 2008 à 14:40
Comment poser encore la question sur InitCommonControls() ?

Ca va faire 14 ans qu'on la rabache toutes les semaines.

Manifestement, tous les noobs ne font plus le moindre aucun effort pour chercher quoi que ce soit :-(
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
20 sept. 2008 à 16:34
Merci, cependant il me reste un "mystère", dans mon prog je n'ai pas InitCommonControl, mais vu que c'est un prog réseau c'est "inclu" avec la librairie libws2_32.
Merci pour votre aide je galère un peu j'étais un habitué de la prog en VCL (équivalant du MFC, avec borland) de plus je suis passé a dev.

jeffy > Ta réponse ne sert a rien, je suis loin d'être quelqu'un qui ne fais pas de recherche sur msdn avant de poser une question et pas un noob non plus (mais ça pour le savoir faudrait regarder le profil avant)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
21 sept. 2008 à 01:48
jeffy131> Très constructive ta réponse.... Vraiment! La prochaine fois que tu poses une question je me ferais un plaisirs de t'envoyer petre en te traitant de noob. Si ca te fais tant chié que ca de voir de telles questions, passe donc ton chemin et ne perd pas ton temps a répondre!

Shell
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
24 sept. 2008 à 13:11
#{[|#{[\^@`|[, je viens de tomber sur ça ici dans la msdn :


<hr />

Under Comctl32.dll version 5.x, only Microsoft Windows 95 classes (ICC_WIN95_CLASSES) can be registered through InitCommonControls. Programs which require additional common control classes must use the InitCommonControlsEx function.Under Comctl32.dll version 6.0 and later, InitCommonControls does nothing. Applications must explicitly register all common controls through InitCommonControlsEx.

<hr />5.x -> 2000/XP et 6->Vista si la version de la dll est cohérente avec la version de Windows.

Tu es sous Vista tibob51 ?

Je dois mal comprendre : ça me paraît impossible qu'ils aient arrêter de faire fonctionner InitCommonControls sous Vista : il doit y avoir un max d'application qui s'en serve.
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
29 sept. 2008 à 18:14
DeAtHCrAsH> Merci du soutient ça fait plaisir ;)

rt15> Non je ne suis pas sous vista je suis sous xp et j'utilise InitCommonControl
par contre je comprend la même chose que toi, c'est vrai que ça me semble bizarre il doit y avoir un max d'incompatibilité alors?!
Je sais pas si quelqu'un pourra nous en dire plus
0
Rejoignez-nous