2010-03-22 6 views
0

Je veux créer une application dont la fenêtre principale a une toile (ou quelque chose où je peux dessiner des choses personnalisées) et certains contrôles, comme les boutons et les champs d'édition. Mais je me suis coincé sur la façon de le faire.Comment ajouter du canvas dans MFC Dialog?

J'ai essayé de créer MFC avec SDI, mais comment ajouter le contrôle à CDC ..? J'ai essayé de créer une boîte de dialogue avec des boutons et des champs d'édition, mais quel contrôle fait référence à quelque chose que je peux dessiner ..?

S'il vous plaît, éclairez-moi comment faire ..

Répondre

2

Son été quelques années pour moi, mais voilà:

Je ne pense pas que MFC a un contrôle de toile spécifique. Au lieu de cela, quand je voulais une surface de dessin, j'ai ajouté une boîte de groupe à la forme en mode design. J'ai rendu la boîte de groupe invisible, donc elle ne s'afficherait pas à l'exécution.

Dans le gestionnaire OnCreate de la vue formulaire, j'ai créé un CWnd et lui ai donné la taille et l'emplacement de la zone de groupe invisible.

J'ai mis en place un gestionnaire de message OnPaint pour le CWnd, et voila, toile graphique instantanée, ou un canevas pour tout ce dont vous avez besoin.

Maintenant, cela a été fait pour la dernière fois il y a cinq ans, et MFC peut avoir progressé de façon incrémentielle depuis, mais c'est le mécanisme général.

+0

Vous pouvez également utiliser CFormView au lieu d'un CDialog en tant que fenêtre parent. – adam

+0

Merci, ça m'a beaucoup aidé. :) –

0

Au lieu de SDI, utilisez une application basée sur un dialogue. Vous pouvez facilement ajouter les contrôles que vous souhaitez dans une boîte de dialogue.

Vous souhaiterez probablement rendre l'application redimensionnable. Définissez le style de bordure sur Épais et activez les boutons Réduire et Agrandir. Redéfinissez OnSize pour déplacer et/ou redimensionner les contrôles lorsque la taille de la boîte de dialogue change. Remplacez OnSizing si vous devez définir une taille minimale pour la fenêtre.

La méthode la plus simple pour effectuer un dessin arbitraire sur la boîte de dialogue consiste à remplacer OnPaint. Définissez une zone de la boîte de dialogue pour contenir votre dessin personnalisé, en l'entourant peut-être d'un contrôle de cadre, et dessinez simplement dans le DC créé par OnPaint.