begin process at 2012 05 30 04:10:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

MDI ChildFrame Caption Redraw Problème (Office 2007 Thèmes)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

MDI ChildFrame Caption Redraw Problème (Office 2007 Thèmes)

mardi 26 avril 2011 à 19:07:51 | MDI ChildFrame Caption Redraw Problème (Office 2007 Thèmes)

TeniX

Membre Club
Bonjour,

Je rencontre un problème d'affichage sur la barre de titre de mes fenêtres enfant MDI quand je suis en thème Office (Bleu,Noir,Argenté ou Cyan).

J'ai le bandeau inférieur qui se redessine mal (Sur quelques pixel). cf Screens





Quand je suis en thème XP sa semble Ok.



Voici la déclaration : (Fenêtre principale)

Code C/C++ :
	
// crée la fenêtre frame MDI principale
pMainFrame = new CMainFrame;
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
{
	delete pMainFrame;
	return FALSE;
}

m_pMainWnd = pMainFrame;


J'ai laissé intact le code généré par VS2010 pour la gestion des thèmes
(Je n'ai pas c/c la fonction raison de longueur OnApplicationLook(theApp.m_nAppLook);)

Code C/C++ :
CMainFrame::CMainFrame()
{
	theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"),            ID_VIEW_APPLOOK_VS_2008);

}


OnCreate du MainFrame :

Code C/C++ :
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)
   return -1;

   OnApplicationLook(theApp.m_nAppLook);


Je crée ma fenêtre comme cela : (Child est la class dérivé de CMDIChildWndEx)

Code C/C++ :
	

MainChild = new Child;

if (MainChild->Create("MDICLIENT",Network,
		WS_CHILD|WS_OVERLAPPEDWINDOW,
		CRect(0,0,800,400),((CMainFrame*)Parent))==0)
    return false;


J'ai essayé plusieurs choses :

Dans le OnPaint() ou OnNcPaint()
J'ai utiliser InvalidateRect() , Invalidate() , DrawCaption()
Mais rien à faire !

Je n'utilise pas de CDocument , j'ai remarqué que les fenêtre MDI crée par un CDocument n'avait pas de genre de problème , mais je ne veux les utiliser

Voila si avez des idées ,

Merci d'avance.

Ciao
mardi 26 avril 2011 à 23:15:08 | Re : MDI ChildFrame Caption Redraw Problème (Office 2007 Thèmes)

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

Peut-être une idée:
A la fin de ta fonction WndProc, rappelles-tu la fonction Windows par défaut ou retournes-tu en indiquant à Windows que le traitement est terminé.

@++
mercredi 27 avril 2011 à 13:10:49 | Re : MDI ChildFrame Caption Redraw Problème (Office 2007 Thèmes)

TeniX

Membre Club
Je ne gère pas la WndProc , c'est peut être sa le problème ! (J'utilise les MFC)

Code C/C++ :
LRESULT Child::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	return CMDIChildWndEx::WindowProc(message, wParam, lParam);
}


mercredi 27 avril 2011 à 15:09:08 | Re : MDI ChildFrame Caption Redraw Problème (Office 2007 Thèmes)

TeniX

Membre Club

J'ai trouvé une solution alternative , j'ai remarqué que par rapport à un thème classique le caption est un peu plus grand de 2 pixel , ce qui explique peut être le problème de dessin.

J'ai implémenté dans le NCPAINT ceci:

Code C/C++ :
void Child::OnNcPaint()
{
	// TODO: Add your message handler code here
	// Do not call CMDIChildWndEx::OnNcPaint() for painting messages
	CMDIChildWndEx::OnNcPaint();
	
	CWindowDC dc(this);
	CRect rect;
	GetWindowRect(rect);
	COLORREF c = GetPixel(dc,10,28);
        CRect r = CRect(10,30,rect.Width()-10,32);
	dc.FillSolidRect(r, c);
        ReleaseDC(&dc);
}


Je dessine la ligne en prenant la couleur du pixel du dessus.

Je suis toujours preneur d'autre solution.

Merci pour l'aide.

Ciao
mercredi 27 avril 2011 à 17:04:47 | Re : MDI ChildFrame Caption Redraw Problème (Office 2007 Thèmes)

TeniX

Membre Club
Je complète mon code ,
C'est peu être un bug mais en attendant pour les intéressés :

Code C/C++ :
void Child::OnNcPaint()
{
	CMDIChildWndEx::OnNcPaint();	
        UpdateCaption();
}
BOOL Child::OnNcCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (!CMDIChildWndEx::OnNcCreate(lpCreateStruct))
		return FALSE;

        UpdateCaption();

	return TRUE;
}
void Child::UpdateCaption()
{
	CWindowDC dc(this);
	COLORREF c = GetPixel(dc,1,30);
	if (c!=CLR_INVALID)
	{
	 CRect rect;
	 GetWindowRect(rect);
         CRect r = CRect(10,30,rect.Width()-10,32);
         dc.FillSolidRect(r, GetPixel(dc,1,30));
	}
	ReleaseDC(&dc);
}


Ciao


Cette discussion est classée dans : code, img, cmainframe, mdi, pmainframe


Répondre à ce message

Sujets en rapport avec ce message

MFC avec MDI [ par Tchii_17 ] J'esaie deseperemment d'ouvrir une form view avec mon propre menu(sans apuyer sur le menu "nouveau doc". J'arrive a afficher une fenetre mais elle est code? [ par cpierrenet ] bj les amis mon blem n'est tjs pas résolu, je le repose autrement et si je ne suis pas clair dit Besoin d'aide [ par yoda59113 ] Bonjour , ou plutôt bonsoir vu l'heure ^^ Je commence à apprendre à programmer en C++ et j'aurai besoin d'un code source pour créer un programme où il comprendre code en c++ [ par ulysse00 ] salut tout le monde je n'arrive pas à comprendre ce lignes des codes qui peut m'aider à comprendre je suis débutant en c ++ et si vous avez des lien Fuite dans code (ci-joint) [ par Manson ] Salut a tous,voila j'ai fait ce bout de code pour redimensionner une bitmapau moment du WM_PAINT, ca marche bien, mais j'ai l'impressionque j'ai une f code? [ par cpierrenet ] salut tous le monde, je débute en C++ je souhaite savoir que signifie ces lignes de code merci if (ex == "JPG")                            img->Save Conversion d'une chaine de caractere en code hexadecimal [ par Ahryman40k ] Bonjour,j'ai le petit probleme suivant, je dois genere par code un fichier .regje veux convertir des caracteres d'une chaine en hexa et les stocker en code sourse en c [ par ammarigh ] salut tos le monde je suis un etudiant et je suis entrait de realiser mon PFEmon probleme est comment utiliser le commande at pour envoyer un sms  dan copie [ par souhila30 ] j'ai besoin d'un code source+executable en builder c++ concernant la copie de fichier pcq j'essaye avec le code source suivant mais sans résultat: if


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,265 sec (4)

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