sprintjeffC
Messages postés16Date d'inscriptionvendredi 31 octobre 2003StatutMembreDernière intervention 3 décembre 2003
-
26 nov. 2003 à 22:53
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
28 nov. 2003 à 10:15
salut,
si je veux que le static présent dans ma fenêtre soit de la même couleur que cette dernière j'arrive pas a envoyer du texte dedans.
J'ai tout essayé, que ce soit un classe définie par mes soins ou prédéfinie (STATIC), rien à faire !!! Le texte ne se voit que si je laisse la couleur par défaut (beige pourri) et utilise la classe prédéfinie STATIC. Pourtant je fais bien mon setwindowtext + mon updatewindow après ???
HEEEEELP !!!
voici mon p'ti prg (dans cette version j'essaye avec ma propre classe static), merci d'avance !!!
ps : ça tourne sous devcpp ...
// 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
HWND ghwnd; // déclaration handle de la fenêtre
HWND ghedbEDB1; // déclaration handle des editbox
HWND ghedbEDB2;
HWND ghedbEDB3;
// 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,
300, 120, 170, 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;
}
// Instanciation 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;
}
// Instanciation static
HWND hstaSTA1 = CreateWindowEx(0, "static", "",
WS_VISIBLE|WS_CHILD,
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;
}
// Envoit du texte sur les objets
SetWindowText(ghedbEDB1, "Taper ici le texte à crypter/décrypter de 5000 caractères maximum ...");
UpdateWindow(ghedbEDB1);
SetWindowText(ghedbEDB3, "entier.entier.entier ...");
UpdateWindow(ghedbEDB3);
SetWindowText(hbtnBTN1, "Crypter");
UpdateWindow(hbtnBTN1);
SetWindowText(hbtnBTN2, "Décrypter");
UpdateWindow(hbtnBTN2);
SetWindowText(hstaSTA1, " jerome.ferquel@free.fr ");
UpdateWindow(hstaSTA1);
// Affichage de la fenêtre
ShowWindow(ghwnd, SW_SHOW);
UpdateWindow(ghwnd);
// Met le focus sur l'editbox 1
SetFocus(ghedbEDB1);
// 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);
}
}
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 nov. 2003 à 00:09
WNDCLASSEX wcwin;
WNDCLASSEX wcsta;
Inutile d'en declarer 2, 1 seule suffit pour enregistrer autant que tu veux. Suffit de modifier les membres de la structure avant chaque RegisterClass et seulement ceux qui ont besoin d'etre modifies.
Le test event clic button se fait sur wParam sans decomposition Hi et Lo car BN_CLICKED = 0.
Pour la modif des couleurs des controles va voir "choix de couleurs" dans mes sources, tout ce qu'il te faut est dedans. Tu dois gerer WM_CTLCOLORSTATIC dans ton cas.
BruNews, ciao...
sprintjeffC
Messages postés16Date d'inscriptionvendredi 31 octobre 2003StatutMembreDernière intervention 3 décembre 2003 27 nov. 2003 à 23:29
merci 1000x :-)))
tant que j'y suis je voudrais faire un petit compteur de lignes dans un projet. j'ai besoin de parcourir une arborescence de répertoires, ouvrir un certain type de fichier et y compter les lignes ... tu utiliserais quoi comme biblio toi ??? (C++ de préférence car faut que je m'y mette ;-)
+
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 nov. 2003 à 23:35
Tu veux parler de fichiers textes je pense pour qu'il y ait notion de lignes.
Comme je ne bosse QUE sur Windows je n'utilise rien d'autre que l'API win32:
CreateFile - ouverture
GetFileSize - pour allouer le buffer
ReadFile - 1 seul acces fichier
CloseHandle - fermeture
maintenant compter les lignes necessite 1 pointeur sur le buffer et basta.
BruNews, ciao...
sprintjeffC
Messages postés16Date d'inscriptionvendredi 31 octobre 2003StatutMembreDernière intervention 3 décembre 2003 27 nov. 2003 à 23:57
effectivement comment n'y ai-je pas pensé je les utilise en vb ... merci. si t'as un bout de code pour utiliser s't'api je prends ... mais peut-être que le sdk est clair la dessus ...
sinon g regardé ton source pour mon pbm de couleur ...
je comprends rien de rien désolé :-///
même en regardant un peu dans le SDK windows ...
une telle difficulté pour colorier un pauvre label est vraiment décourageant ... vive VB !!! :-)))
comment ça se fait qu'on puisse pas faire ça en 3 lignes max et simplement ... c halluciant, on est pas en assembleur quand même ???
+
Vous n’avez pas trouvé la réponse que vous recherchez ?