sprintjeffC
Messages postés16Date d'inscriptionvendredi 31 octobre 2003StatutMembreDernière intervention 3 décembre 2003
-
1 déc. 2003 à 23:22
toki127
Messages postés241Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention31 mai 2021
-
9 juil. 2004 à 11:03
salut @ tous
je me mets a la programmation windows en C/C++ (pas VC++ merci ... quitte à faire du microsoft je préfère VB ;-). Je démarrai pas mal et tout et tout et puis : catastrophe je me heurte à un truc infaisable : attention vous allez rire :
j'arrive pas à colorier un static !!!! :-///
(le truc qui se fait en 2 nano-secondes en vb bravo la productivité ;-)
qqn saura-t-il m'aider ??????????
help !!!!
voici un tout petit bout de code, je voudrais que la couleur de fond du static soit de la même que celle de la fenêtre !!! C pas la mere à boire quand même :-)))
merci 1000x d'avance
sprintjeffc désespéré (à 2 doigts de se remettre au Dr logo ;-)
#include <windows.h> // include pour programmation windows
#define ID_STATIC_1 1 // ID static
HWND ghwnd; // déclaration handle de la fenêtre
// Gestion des évènements sur la fenêtre
LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);
// La main avec windows.h
int WINAPI WinMain(HINSTANCE FirstInstance, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow)
{
// Création de la fenêtre
ghwnd = CreateWindowEx(0, "Window", "Crypteur/décrypteur XOR",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 530, 260,
HWND_DESKTOP, NULL, FirstInstance, NULL);
if (ghwnd == NULL)
{
MessageBox(NULL, "Erreur lors de la création d'une fenêtre.", "Erreur", MB_OK);
return 0;
}
// Création du static (avec classe prédéfinie)
HWND hstaSTA1 = CreateWindow( "STATIC", "Texte statique",
WS_CHILD | WS_VISIBLE | SS_LEFT,
362, 200, 155, 18,
ghwnd,
(HMENU)ID_STATIC_1,
FirstInstance, NULL );
if (hstaSTA1 == NULL)
{
MessageBox(ghwnd, "Erreur lors de la création d'un static.", "Erreur", MB_OK);
return 0;
}
// Boucle qui permet au programme de tourner sans arrêt et de guetter les
// évènement pour les envoyer à la procédure qui les gère (ci dessous)
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// Evènements sur la fenêtre
LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
char chRretour;
switch (msg)
{
// Fermeture du programme
case WM_DESTROY:
// Ferme le programme
PostQuitMessage(0);
break;
// Fermeture de la fenêtre via le menu système ou la croix(X) noir
case WM_CLOSE:
// Décharge la fenêtre
DestroyWindow(hwnd);
break;
case WM_CTLCOLORSTATIC :
//MessageBox(ghwnd, "coucou", "Debug", MB_OK);
//Je l'aisse cette entrée car qqn sur le forum m'a dit que ça se passait ici ...
break;
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 2 déc. 2003 à 10:57
tu as 2 possibilité pour avoir une couleur uniforme :
1/ Tu met au tt début un static vide qui couvre tte la surface de l'appli (c plus de la bidouille qu'autre chose mais ça marche)
2/ Tu rajoute dans ton switch :
case WM_CTLCOLORSTATIC:
SetBkMode((HDC) wParam, TRANSPARENT);
return (BOOL)(HBRUSH)(COLOR_WINDOW);
voila, jsuis plus très sur mais ca devrait marcher
sprintjeffC
Messages postés16Date d'inscriptionvendredi 31 octobre 2003StatutMembreDernière intervention 3 décembre 2003 2 déc. 2003 à 22:45
merci brunews mais ton source choix des couleurs est absolument inexploitable, tout juste bon à décourager un débutant. la 1er qualité d'un code c d'etre bien commenté ...
anacr0x : ça marche po ... :-///
pour le coup du static grand comme la fenêtre y a qd même un pbm si l'utilisateur agrandit la fenêtre !
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 3 déc. 2003 à 15:53
bizar ke ca marche pas, j'ai vérifié, et moi je mettais :
// ca au tt début
HBRUSH hBrush=(HBRUSH)(COLOR_WINDOW);
// pi la création de la classe
WNDCLASSEX wc;
wc.hInstance = MainInstance;
// etc etc...
wc.hbrBackground = hBrush; // la jmet la meme couleur que pour les static
// pi ds le switch
case WM_CTLCOLORSTATIC:
SetBkMode((HDC) wParam, TRANSPARENT);
return (BOOL) hBrush;
Et ca devrait marcher...
Enfin, pour le static, soit tu bloque le redimensionement, soit tu prévoit un static assez grand (+ de 1024x768 koi)
Vous n’avez pas trouvé la réponse que vous recherchez ?
sprintjeffC
Messages postés16Date d'inscriptionvendredi 31 octobre 2003StatutMembreDernière intervention 3 décembre 2003 3 déc. 2003 à 21:56
TU ES GRAND CA MARCHE !!! (faut donner toutes les instructions je vais pas les trouver tout seul ;-) En fait j'ai utilisé la fonction getstockobject pour balancer le même gris dans la fenêtre et les static !!!
merci 100Ox
Kdo => voici le code de mon petit crypteur quasi achevé grâce à toi :
// To do :
// - icône dans fenêtre
// - voir remarques brunews
// Rappel normes de nommage des variables
// Dsl je suis VB-iste à la base ;-)
// - 'g' si variable niveau global, 'm' si niveau module, rien si local
// - sur 3 caratères : rappel type variable
// - sur n caracteres : non de la variable
// Ex : mhwndMaFenetre = handle pour window niveau module MaFenetre
// Si nommage utilisé une seule fois le préfixe suffit (ex : mhwnd)
// Tableaux : gtoi = global table of integers
#include <windows.h> // include pour programmation windows
#include <string.h> // pour strcpy, ...
#include <stdlib.h> // pour atoi, ...
#define ID_EDITBOX_1 1 // ID editbox
#define ID_EDITBOX_2 2
#define ID_EDITBOX_3 3
#define ID_BUTTON_1 1 // ID boutons
#define ID_BUTTON_2 2
#define ID_STATIC_1 1 // ID static
#define ID_STATIC_2 2
// Astuce pour colorier les static
HBRUSH hbr =(HBRUSH)GetStockObject(LTGRAY_BRUSH);
// Gestion des évènements sur la fenêtre
LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);
// Fonction de cryptage, décryptage
char fCrypte (char chCryptage);
// La main avec windows.h
int WINAPI WinMain(HINSTANCE FirstInstance, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow)
{
// Création de la fenêtre
ghwnd = CreateWindowEx(0, "Window", "Crypteur/décrypteur XOR",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 530, 260,
HWND_DESKTOP, NULL, FirstInstance, NULL);
if (ghwnd == NULL)
{
MessageBox(NULL, "Erreur lors de la création d'une fenêtre.", "Erreur", MB_OK);
return 0;
}
// Création des editbox (avec classe prédéfinie)
ghedbEDB1 = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "",
WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
10, 10, 500, 25,
ghwnd, (HMENU)ID_EDITBOX_1, FirstInstance, NULL);
ghedbEDB2 = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "",
WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
10, 50, 500, 25,
ghwnd, (HMENU)ID_EDITBOX_2, FirstInstance, NULL);
ghedbEDB3 = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "",
WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
340, 120, 130, 25,
ghwnd, (HMENU)ID_EDITBOX_3, FirstInstance, NULL); if (ghedbEDB1 NULL && ghedbEDB2 NULL && ghedbEDB3 == NULL)
{
MessageBox(ghwnd, "Erreur lors de la création d'une editbox.", "Erreur", MB_OK);
return 0;
}
// Création des boutons (avec classe prédéfinie)
HWND hbtnBTN1 = CreateWindowEx(0, "BUTTON", "",
WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_NOTIFY|BS_TEXT,
40, 120, 100, 50,
ghwnd, (HMENU)ID_BUTTON_1, FirstInstance, NULL);
HWND hbtnBTN2 = CreateWindowEx(0, "BUTTON", "",
WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_NOTIFY|BS_TEXT,
160, 120, 100, 50,
ghwnd, (HMENU)ID_BUTTON_2, FirstInstance, NULL); if (hbtnBTN1 NULL && hbtnBTN2 NULL)
{
MessageBox(ghwnd, "Erreur lors de la création d'un bouton.", "Erreur", MB_OK);
return 0;
}
// Création des static (avec classe prédéfinie)
HWND hstaSTA1 = CreateWindow("STATIC", "",
WS_CHILD | WS_VISIBLE | SS_LEFT,
290, 120, 50, 18,
ghwnd,
(HMENU)ID_STATIC_1,
FirstInstance, NULL );
HWND hstaSTA2 = CreateWindow("STATIC", "",
WS_CHILD | WS_VISIBLE | SS_LEFT,
358, 200, 150, 18,
ghwnd,
(HMENU)ID_STATIC_1,
FirstInstance, NULL ); if (hstaSTA1 NULL || hstaSTA2 NULL)
{
MessageBox(ghwnd, "Erreur lors de la création d'un static.", "Erreur", MB_OK);
return 0;
}
// Boucle qui permet au programme de tourner sans arrêt et de guetter les
// évènement pour les envoyer à la procédure qui les gère (ci dessous)
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// Evènements sur la fenêtre
LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
char chRretour;
switch (msg)
{
// Fermeture du programme
case WM_DESTROY:
// Ferme le programme
PostQuitMessage(0);
break;
// Fermeture de la fenêtre via le menu système ou la croix(X) noir
case WM_CLOSE:
// Décharge la fenêtre
DestroyWindow(hwnd);
break;
// Réception des évènements sur les objets
case WM_COMMAND:
MessageBox(ghwnd, "Mémoire insuffisante sur la station !!!", "Erreur", MB_OK);
break;
case EN_MAXTEXT:
MessageBox(ghwnd, "Le nombre maximum de caractères dans une editbox a été atteint !!!", "Erreur", MB_OK);
break;
case EN_CHANGE:
//MessageBox(ghwnd, "Le contenu d'une editbox à changé.", "EN_CHANGE", MB_OK);
break;
default:
break;
}
}
// Bouton Crypter
// Vérifie que c'est bien le bouton et vérifie qu'on à cliqué dessus if ((LOWORD(wParam) ID_BUTTON_1) && (HIWORD(wParam) BN_CLICKED))
{
if(fCrypte(1) != 1)
{
MessageBox(ghwnd, "Zut ... le cryptage a planté ???", "Crytpage", MB_OK);
}
break;
}
// Bouton Décrypter
// Vérifie que c'est bien le bouton et vérifie qu'on à cliqué dessus if ((LOWORD(wParam) ID_BUTTON_2) && (HIWORD(wParam) BN_CLICKED))
{
if(fCrypte(2) != 1)
{
MessageBox(ghwnd, "Zut ... le décryptage a planté ???", "Décrytpage", MB_OK);
}
}
break;
case WM_CTLCOLORSTATIC :
// Coloration des static
SetBkMode((HDC) wParam, TRANSPARENT);
return (BOOL) hbr;
break;
toki127
Messages postés241Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention31 mai 2021 9 juil. 2004 à 10:15
Bonjour!
Alors même en ayant cette source complète sous les yeux, impossible d avoir mon fond de static transparent... je suis désespéré!
si j ai bien compris les pts importants :
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 9 juil. 2004 à 10:49
Il ne sera pas transparent si tu mets un brush LTGRAY_BRUSH, faut reflechir a ce qu'on fait.
Regarde ma source de texte sur image par static transparent.
toki127
Messages postés241Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention31 mai 2021 9 juil. 2004 à 11:00
lol j ai essayé deja plein de trucs différents qui me parraissait logique :)
je l ai sous les yeux ta source de texte sur image... et je vois pas pkoi j y arrive pas :(
tant pis je v rester avec mon static coloré ca donne un style lol
merci qd meme