begin process at 2012 02 12 19:09:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > MODIF MENU SYSTÈME [VC][DEVCPP][LCCW32]

MODIF MENU SYSTÈME [VC][DEVCPP][LCCW32]


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Niveau :Débutant Date de création :25/04/2002 Date de mise à jour :25/04/2002 22:25:34 Vu :5 291

Auteur : Xaviou

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

 Description

Cliquez pour voir la capture en taille normale
Voici un petit exemple montrant comment modifier le menu système d'une feuille :
- Suppression de commandes (Agrandir, ....)
- Ajout de commandes (par ex: A propos de...)

Source

  • #include <Windows.h>
  • #define IDM_ABOUT 100
  • HWND hWndMain;
  • void ModifySystemMenu()
  • {
  • // Recherche du menu système de la fenêtre
  • HMENU hSysMenu = GetSystemMenu(hWndMain,FALSE);
  • // Suppression des commandes 'Taille', 'Agrandir" et "Déplacer' du menu système
  • // Cela supprime également toute possibilité de redimensionner, agrandir et déplacer
  • // la fenêtre avec la souris (essayez, pour voir)
  • DeleteMenu(hSysMenu,SC_SIZE,MF_BYCOMMAND);
  • DeleteMenu(hSysMenu,SC_MAXIMIZE,MF_BYCOMMAND);
  • DeleteMenu(hSysMenu,SC_MOVE,MF_BYCOMMAND);
  • // Ajout d'un séparateur
  • AppendMenu(hSysMenu,MF_SEPARATOR,0,NULL);
  • // Ajout du menu 'A propos de...'
  • AppendMenu(hSysMenu,MF_STRING | MF_ENABLED,(UINT)IDM_ABOUT,"A &propos de ...");
  • }
  • LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, UINT wParam, UINT lParam)
  • {
  • switch(message)
  • {
  • case WM_DESTROY:
  • PostQuitMessage(0);
  • return 0;
  • case WM_SYSCOMMAND:
  • switch (LOWORD(wParam))
  • {
  • case IDM_ABOUT:
  • MessageBox(hWnd,"C'est t'y pas beau, ça ???","A propos de...",MB_ICONINFORMATION);
  • return 0;
  • default:
  • return DefWindowProc(hWnd,message,wParam,lParam);
  • }
  • break;
  • default:
  • return DefWindowProc(hWnd,message,wParam,lParam);
  • }
  • return 0;
  • }
  • int APIENTRY WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdLine,int nCmdShow)
  • {
  • WNDCLASS wc;
  • MSG Msg;
  • wc.lpfnWndProc=(WNDPROC)MainWndProc;
  • wc.hCursor=LoadCursor(NULL,IDC_ARROW);
  • wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
  • wc.style=CS_HREDRAW|CS_VREDRAW;
  • wc.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);
  • wc.cbClsExtra=0;
  • wc.cbWndExtra=0;
  • wc.hInstance=hInst;
  • wc.lpszClassName="MyWndClass";
  • wc.lpszMenuName=NULL;
  • RegisterClass(&wc);
  • hWndMain=CreateWindow("MyWndClass","Modification du menu système",
  • WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CAPTION | WS_MINIMIZEBOX,
  • CW_USEDEFAULT,0,300,250,NULL,NULL,hInst,NULL);
  • ShowWindow(hWndMain,nCmdShow);
  • UpdateWindow(hWndMain);
  • ModifySystemMenu();
  • while (GetMessage(&Msg,NULL,0,0))
  • {
  • TranslateMessage(&Msg);
  • DispatchMessage(&Msg);
  • }
  • return 0;
  • }
#include <Windows.h>

#define IDM_ABOUT	100

HWND hWndMain;

void ModifySystemMenu()
{
	// Recherche du menu système de la fenêtre
	HMENU hSysMenu = GetSystemMenu(hWndMain,FALSE);
	// Suppression des commandes 'Taille', 'Agrandir" et "Déplacer' du menu système
	// Cela supprime également toute possibilité de redimensionner, agrandir et déplacer
	// la fenêtre avec la souris (essayez, pour voir)
	DeleteMenu(hSysMenu,SC_SIZE,MF_BYCOMMAND);
	DeleteMenu(hSysMenu,SC_MAXIMIZE,MF_BYCOMMAND);
	DeleteMenu(hSysMenu,SC_MOVE,MF_BYCOMMAND);
	// Ajout d'un séparateur
	AppendMenu(hSysMenu,MF_SEPARATOR,0,NULL);
	// Ajout du menu 'A propos de...'
	AppendMenu(hSysMenu,MF_STRING | MF_ENABLED,(UINT)IDM_ABOUT,"A &propos de ...");
}

LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, UINT wParam, UINT lParam)
{
	switch(message)
	{
		case WM_DESTROY:
			PostQuitMessage(0);
			return 0;
		case WM_SYSCOMMAND:
			switch (LOWORD(wParam))
			{
				case IDM_ABOUT:
					MessageBox(hWnd,"C'est t'y pas beau, ça ???","A propos de...",MB_ICONINFORMATION);
					return 0;
				default:
					return DefWindowProc(hWnd,message,wParam,lParam);
			}
			break;
		default:
			return DefWindowProc(hWnd,message,wParam,lParam);
	}
	return 0;
}

int APIENTRY WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdLine,int nCmdShow)
{
	WNDCLASS wc;
	MSG Msg;

	wc.lpfnWndProc=(WNDPROC)MainWndProc;
	wc.hCursor=LoadCursor(NULL,IDC_ARROW);
	wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
	wc.style=CS_HREDRAW|CS_VREDRAW;
	wc.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);
	wc.cbClsExtra=0;
	wc.cbWndExtra=0;
	wc.hInstance=hInst;
	wc.lpszClassName="MyWndClass";
	wc.lpszMenuName=NULL;

	RegisterClass(&wc);

	hWndMain=CreateWindow("MyWndClass","Modification du menu système",
							WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CAPTION | WS_MINIMIZEBOX,
							CW_USEDEFAULT,0,300,250,NULL,NULL,hInst,NULL);
	
	ShowWindow(hWndMain,nCmdShow);
	UpdateWindow(hWndMain);

	ModifySystemMenu();

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



 Sources du même auteur

Source avec Zip UTILISATION WXWIDGETS 2.6.3 SOUS CODE::BLOCKS
Source avec Zip Source avec une capture MENU CONTEXTUEL PAR DÉFAUT
Source avec Zip Source avec une capture DÉBLOQUER LES PIÈCES JOINTES D'OUTLOOK
Source avec Zip Source avec une capture JEU "QUARTO" EN OPENGL
Source avec Zip TUTORIEL VC++ ET WXWINDOWS

 Sources de la même categorie

Source avec Zip Source avec une capture UNE LISTE HÉTÉROGÈNE DOUBLEMENT CHAINÉE par pgl10
Source avec Zip Source avec une capture POUR AFFICHER LES CARACTÈRES ACCENTUÉS SOUS WINDOWS EN MODE ... par pgl10
Source avec Zip PETITE CLASSE DE GESTION DES PROCESSUS SOUS WINDOWS par wisar
Source avec Zip KEYLOGGER AVEC NOM DU PROCESSUS ET DE LA FENETRE QUI A LE FO... par wisar
Source avec Zip LINUX USB BOOT LEGER par patatalo

Commentaires et avis

Commentaire de larion le 10/05/2004 19:14:52

Merci beaucoup.
Cet exemple m'a permis de modifier les menus systemes de toutes les fenêtres windows.
Mais cela ne fonctionne pas sur les barres outils (en fenêtres).
Y a t-il une solution ?

Commentaire de Xaviou le 10/05/2004 20:49:27

Les barres d'outils n'ont pas de menu système (du moins à ma connaissance)
Il te va donc falloir trouver une autre méthode (explique ce que tu veux faire, on verra bien)

Désolé, et bon prog quand même

Commentaire de larion le 10/05/2004 23:03:11

En fait je développe un bureau virtuel.
Grace au code ci-dessus, lorsque l'on fait un click droit sur une fenêtre, on obtient le menu suivant :
Restaurer
Déplacer
Taille
Réduire
Agrandire
----------
X Fermer
----------
Visible sur Bureau [1]
Visible sur Bureau [2]
Visible sur Bureau [3]
Visible sur Bureau [4]
....
De manière si l'on est sur le bureau 1 et que l'on sélèctionne "Visible sur Bureau [2]"
La fenêtre sera visible sur le bureau choisi.
Cela fonctionne parfaitement pour les fenêtres
Et je désire faire la même chose avec les barres d'outils et modifier le menu de cette manière :
Barres d'outils &gt;
-------------
Toujours visible
Masquer automatiquement
------------
Visible sur Bureau [1]
Visible sur Bureau [2]
Visible sur Bureau [3]
Visible sur Bureau [4]
....

Mais ce n'est peut-être pas possible puisque ce n'est pas un menu système ...
Merci quand même pour la réponse.

Commentaire de victorcoasne le 14/12/2005 18:35:29

C'est ce que je cherchais !
10/10 !

Commentaire de chamfay le 14/04/2010 13:29:42

merci

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

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 : 0,390 sec (3)

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