begin process at 2012 02 10 17:21:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > LA LIB POUR FENETRE WIN32

LA LIB POUR FENETRE WIN32


 Information sur la source

Note :
Aucune note
Catégorie :API Niveau :Débutant Date de création :09/09/2003 Date de mise à jour :09/09/2003 18:40:20 Vu :4 540

Auteur : Krox68

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

c une lib qui facilite la mise de boutons, edit et static ainsi un gettext() et dotre
vou pouvez lameliorez

Source

  • #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;
  • }
#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;
}

 Conclusion

pour lutiliser, voici un exemple :


#include &lt;fenetre.h&gt;

#define Command_ID 300

LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);
void Command_Click(int);

int WINAPI WinMain(HINSTANCE instance1, HINSTANCE instance2, LPSTR lps, int nShow)
{
MSG message;
WNDCLASSEX fen;

      // Création de la classe
      fen.hInstance     = instance1;        // Instance
      fen.lpszClassName = "fenetre";   // Nom de la classe
      fen.lpfnWndProc   = WinProc;        // Adresse de la procédure
      fen.style         = CS_DBLCLKS;           // Style
      fen.cbSize        = sizeof(WNDCLASSEX);  // Taille
      fen.hIcon         = LoadIcon(instance1,"MAIN");    // Grande icone
      fen.hIconSm       = LoadIcon(NULL,NULL);   // Petite icone
      fen.hCursor       = LoadCursor(NULL, IDC_ARROW);     // Curseur
      fen.lpszMenuName  = NULL;     // Menu
      fen.cbClsExtra    = 0;
      fen.cbWndExtra    = 0;
      fen.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);
      if(!RegisterClassEx(&fen)) return 0;

HWND fenetre = CreateWindowEx(0,"fenetre","Exemple de fenetre",WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_VISIBLE |WS_MINIMIZEBOX,220,20,400,350,HWND_DESKTOP,NULL,h Inst,NULL);
if(fenetre == NULL) return 0;


CreateStatic(1,"Un static",50,10,60,21,fenetre);
CreateEdit(2,"Un edit",50,40,60,21, 0,0,0,0,fenetre);
CreateCommand(3,"Un bouton",50,70,60,21,fenetre);

ShowWindow(fenetre, SW_SHOW);
UpdateWindow(fenetre);

      while (GetMessage(&message, NULL, 0, 0))
      {
      TranslateMessage(&message);
      DispatchMessage(&message);
      }

return message.wParam;
}

LRESULT CALLBACK WinProc(HWND fenetre2, UINT message2, WPARAM wParam, LPARAM lParam)
{
switch (message2)
{
       case WM_DESTROY:
       PostQuitMessage(0);
       break;

       case WM_CLOSE:
       DestroyWindow(fenetre2);
       break;

       case WM_COMMAND:
       if(HIWORD(wParam) == BN_CLICKED)Command_Click(LOWORD(wParam) - Command_ID);
       break;

       default:
       return DefWindowProc(fenetre2,message2,wParam,lParam);
       break;
       }
return 0;
}

void Command_Click(int Index)
{
   switch(Index)
   {
       case 1:
       break;
   }
}


 Sources du même auteur

CLIENT-SERVEUR : DONNEES CRYPTEES XOR
SCANNER DE SERVICES
NET : UTILITAIRE LINUX SOCKETS
Source avec Zip UTILITAIRE RESEAU
Source avec Zip SCANNER DE PORTS OUVERTS (COMMENTÉ)

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

Commentaires et avis

Commentaire de Krox68 le 09/09/2003 18:44:14

voila voila,
jatten les commentaires des dieux de l'API win32...

Commentaire de BruNews le 09/09/2003 18:55:31 administrateur CS

Pourquoi empiler tous ces parametres vers une fonction qui les empilera a son tour pour CreateWindowEx(), autant les lui passer directement. Je ne cerne pas bien l'inreret de la chose.

Commentaire de Anacr0x le 09/09/2003 21:18:52

ca simplifie pas beaucou la création de fenetre quand mem... une fois que ta un squelette de pret, c presque du copier collé... Et puis ca limite beaucoup les choix de style et autre.
Enfin bon, peut-etre que ca interesse des personnes, a vrai dire j'en sé rien

Commentaire de vbnul le 01/03/2004 11:29:51

Si qqn a besoin d'une lib qui simplifie vraiment qqch, y'a la WLib :

http://freecodz.net/articles/WLib.html

Pas encore trés complète mais ca devient presque du VB (non visuel lol)

Commentaire de janko_math le 12/06/2004 04:47:49

vbnul: c sympa ta classe, ca ressemble au classe qui exixte deja.
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.

Commentaire de vbnul le 12/06/2004 09:50:27

Je ne vois pas ce que tu veux dire par classe abstraite et polymorphisme :$
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 =)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,020 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales