2012-04-04 4 views
1

Je ne veux pas utiliser les "ressources graphiques" pour créer la boîte de dialogue!Comment créer une fenêtre CDialog par programme?

Ce que j'ai jusqu'à présent:

CDialog *dlgWin = new CDialog(); 
dlgWin->Create("hello"); // <-- but this Errors: "Debug Assertion failed!" 

thx

+4

Si vous ne voulez pas utiliser une ressource de dialogue, cela ne sert à rien d'utiliser CDialog. Déterminez votre propre classe à partir de CWnd, faites le travail pour faire en sorte qu'il ne ressemble pas à une fenêtre vide, appelez sa méthode RunModalLoop() pour en faire une boîte de dialogue. –

Répondre

2

Vous devez créer le modèle de dialogue dans l'éditeur de ressources, et de fournir au constructeur CDialog.

Voici le documentation, ils expliquent également comment créer dynamiquement votre boîte de dialogue en mémoire, ce n'est pas trivial et je déconseille. Je déconseille d'utiliser MFC tout à fait.

La documentation MSDN est généralement assez bien écrite, lisez-la.

+0

Que recommandez-vous pour l'interface graphique si ce n'est pas MFC? ... J'ai besoin de boutons et onglets, boîtes d'édition, cordes, traçage ... – jdl

+0

Je voudrais aller avec. NET. Qt est une autre option (portable) à considérer. Peut-être plus, faire des recherches. – littleadv

+2

* "Je déconseille complètement l'utilisation de MFC." * Pourquoi? Parce que vous avez entendu que c'est vieux? J'ai entendu quelque part que "la documentation MSDN est généralement assez bien écrite". –

1

J'utilise un modèle de boîte de dialogue vide pour toutes les boîtes de dialogue, puis j'utilise ma propre bibliothèque de disposition de l'interface graphique pour générer et gérer la taille des widgets MFC. Je ne sais pas si vous voulez vraiment le faire car cela nécessite beaucoup de travail supplémentaire, donne des problèmes mais aussi des fonctionnalités.

Utiliser Qt ou GTK pourrait être un moyen mais je ne les aime pas.

Questions connexes