Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 834 fois - Téléchargée 32 fois
#include <windows.h> #define Label_ID 100 #define Text_ID 200 #define Command_ID 300 void CreateStatic(int, char*, int, int, int, int,HWND); void CreateEdit(int, char*, int, int, int, int, bool, bool, bool, bool,HWND); void CreateCommand(int, char*, int, int, int, int,HWND); char *GetText(HWND); void SetFont(HWND); HINSTANCE hInst; HWND label[100], edit[100], command[100]; void CreateStatic(int Index, char* Text, int Left, int Top, int Width, int Height,HWND fen) { int ID = Label_ID + Index; label[Index] = CreateWindowEx(0, "STATIC", Text, WS_VISIBLE|WS_CHILD,Left, Top, Width, Height, fen, (HMENU)ID, hInst, NULL); SetFont(label[Index]); } void CreateEdit(int Index, char* Text, int Left, int Top, int Width, int Height, bool MultiLine, bool HScroll, bool VScroll, bool Locked,HWND fen) { int ID = Text_ID + Index; edit[Index] = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", Text, WS_VISIBLE|WS_CHILD|ES_WANTRETURN|ES_LEFT|(MultiLine ? ES_MULTILINE|ES_AUTOVSCROLL : 0)|(HScroll ? WS_HSCROLL|ES_AUTOHSCROLL : 0)|(VScroll ? WS_VSCROLL : 0)|(Locked ? ES_READONLY : 0), Left, Top, Width, Height, fen, (HMENU)ID, hInst, NULL); SetFont(edit[Index]); } void CreateCommand(int Index, char* Text, int Left, int Top, int Width, int Height,HWND fen) { int ID = Command_ID + Index; command[Index] = CreateWindowEx(0, "BUTTON", Text, WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_NOTIFY|BS_TEXT,Left, Top, Width, Height, fen, (HMENU)ID, hInst, NULL); SetFont(command[Index]); } void SetFont(HWND hWnd) { SendMessage(hWnd, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0)); } char *GetText(HWND hWnd) { char *Text = ""; unsigned int TextLen = 0; TextLen = GetWindowTextLength(hWnd); if(TextLen){ Text = new char[(TextLen + 2)]; TextLen = GetWindowText(hWnd, Text, (TextLen + 1)); } return Text; }
Le principe de la WLib c de référencer tt les fenetres ds une var globale et de référencer tt les controles dans les fenetres parentes pour pouvoir les retrouver dans la boucle des message ou l'ont nous donne le hwnd de la fenetre parente & l'ID du controle.
Si j'ai bien compris, ta méthode ferait en sorte de stocker les infos de la fenetre parente dans chaque controle ? A ce moment là il faudrait référencer tous les controles dans des vars globales... ?
J'avais pas pensé aux listes chainées, sa va plus vite que de réallouer à chaque fois le meme espace +1 je suppose :)
Merci pour tes suggestions en tt cas :) bien que je ne m'occupe plus de la WLib : passé sous linux j'aimerais plutot m'orienter vers GTK pour avoir qqch de compatible win/nux.
D'autre part, si tu veux améliorer toi meme la WLib y'a pas de pb =)
Mais pourkoi dans ta classe window faire des tableaux sur de listes box et des button. T'aurai meilleur temps de créer une classe abstraite dont heriterait ces deux derniers.
Apres tu fais un tableu de cette classe abstraite, et par polymorphisme c'est reglé.
Et aprés ca te permet d'ajouter plein d'autre objet de nature différente.
Et plutot qu'un tableau tu devrais faire une liste chainée, ca te permetterait d'avoir un controle entierement dynamique de tes fenetres.
Et pour que ce soit parfait tu devrai faire la boucle principal de ta fenetre dans un Thread ou alors faire un Timer sur la boucle pour qu'elle cheque les messages toutes les 100 millisecondes ou plus, ca suffit.
Voila le genre d'amelioration que tu peut apporter.
Base toi sur les modeles qui existent en java tu verras c bien fait.
http://freecodz.net/articles/WLib.html
Pas encore trés complète mais ca devient presque du VB (non visuel lol)
Enfin bon, peut-etre que ca interesse des personnes, a vrai dire j'en sé rien
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.