2017-09-12 3 views
-1

Je tryed plusieurs choses, mais la base vient à ceci:Comment créer un CDialog?

#include <stdio.h> 
#include <afxwin.h> 


main(int argc, const char* argv[]) 
{ 

    printf("\nHello World\n\n"); 

    CDialog *dlg = new CDialog(); 
    dlg->DoModal(); 

    while(true)Sleep(1); // Sleep is a windows function 
} 

quand je cours, je reçois ceci: enter image description here

Qu'est-ce que je manque de cette boîte de dialogue? J'ai recherché plusieurs sites mais tout a le même message d'erreur. Quelqu'un peut-il me dire ce que je ne vois pas?

+2

Vous souhaitez afficher une boîte de dialogue, d'accord. Mais que voulez-vous qu'il contienne? Juste du texte (utilisez 'MessageBox' à la place)? Ou une sorte de formulaire (créer un projet basé sur un dialogue à la place)? Autre chose? –

+0

à la fin je veux vouloir obtenir quelques informations de la boîte de dialogue. mais d'abord, je veux afficher une boîte de dialogue vide: D –

+1

Pour commencer, utilisez simplement l'assistant d'application Visual Studio pour créer une application «basée sur une boîte de dialogue». Cela générera le code nécessaire pour créer un dialogue "vide". Plus tard, vous pouvez essayer de tout faire à partir de zéro, mais pour les débutants, il est recommandé d'utiliser l'assistant. – zett42

Répondre

2

L'utilisation du MFC dans une application console nécessite certaines initialisations. Sans cela, vous obtiendrez des affirmations.

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 
{ 
    // initialize MFC and print and error on failure 
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) 
    { 
     // TODO: change error code to suit your needs 
     _tprintf(_T("Fatal Error: MFC initialization failed\n")); 
     return 8; 
    } 

Vous devez également utiliser une ressource liée au CDialog. Vous pouvez utiliser les constructeurs appropriés. Ou vous dérivez votre propre dialogue à partir de CDialog en utilisant l'assistant de classe.

Mais cela n'a aucun sens de créer une application de console MFC et d'utiliser des boîtes de dialogue ... Votre question peut nécessiter plus de détails, ce que vous voulez faire, et pourquoi vous voulez le faire de cette façon.

Vous devrez peut-être lire des livres ou des articles avant de poursuivre cette méthode de programmation.

+2

Vous n'avez pas besoin de dériver de 'CDialog'. Si c'était le cas, tous les constructeurs explicites seraient protégés (ils ne sont * pas *). Il est, cependant, plutôt limité dans les choses que vous pouvez faire (parce que vraiment, vous ne faites rien d'autre que d'autoriser le traitement par défaut de 'CDialog'.) Les parties les plus importantes de cette réponse sont: (a) configurer correctement MFC, et (b) s'assurer que le dialogue est lié à une ressource (par opposition à l'utilisation du constructeur non lié). * Aucun de ceux-ci ne sont actuellement dans le code OP, et les deux * devraient être – WhozCraig

+0

Merci pour le conseil. . – xMRi