Je fais le jeu MFC basé par boîte de dialogue. Pendant le jeu il y a une phase de bataille, et je veux afficher chaque texte sur l'écran avec un petit retard, J'ai essayé d'utiliser le sommeil et j'ai essayé CTime, mais les deux affichent seulement le dernier texte à chaque bataille ... ici est un exemple du code ...Retarder le texte d'affichage de fenêtres sur le mfc
void CDNDPprojectDlg::OnBnClickedAction()
{
CString Damaged;
damage=me->Attack(enemy,WeID);
SDialog.Format(_T("You done %d damage, using %s,\r\n %s has %d HP left"), damage,Damaged,monName,enemy->getHP());
Output.SetWindowTextW(SDialog);
if(enemy->getHP() <1)
{
Won();
return;
}
NextAttack();
if(me->getHP() <1)
{
Died();
return;
}
}
Au début des 3 fonctions il y a Sleep (700). il fait un retard, mais seul le dernier affichage
Output.SetWindowTextW(SDialog);
que je mets ... Je suppose que quelque chose de filetage, s'il vous plaît me aider.
grâce
Incroyable !!! tu es mon héros! Merci! – secret
Pas honteux. Ce modèle est souvent appelé PeekAndPump. c'est-à-dire vérifier si des messages sont en attente dans la file d'attente des messages (coup d'oeil) et si oui, les envoyer (les pomper). – acraig5075
Ha ha - oui - c'est honteux à cause de sa référence à Visual Basic bien sûr - nous sommes tous des snobs C++, n'est-ce pas? :) Cela dit que beaucoup de choses peuvent arriver dans le furetage et le pompage des messages (comme la destruction de la boîte de dialogue), donc ce n'est pas la façon la plus simple de gérer un rafraîchissement ... mais c'est si facile. – BadJerry