Je travaille sur une application basée sur DialogBox win32. Cela utilise DialogBox() pour créer la boîte de dialogue, et a une procédure de boîte de dialogue qui fait toutes les choses habituelles.Win32 DialogBox application: comment afficher le texte de rappel sur la DialogBox?
La boîte de dialogue comporte des contrôles de texte statique et, généralement, je montre du texte dans ceux-ci via SendDlgItemMessage() à partir de la procédure de boîte de dialogue.
Toutefois, à un moment donné, la DialogBox initie une longue opération. Cette opération a un rappel avec une série de messages d'état. Je vais avoir quelques problèmes montrant ces messages sur la boîte de dialogue, pour deux raisons:
La fonction de rappel ne sait pas ce que la boîte de dialogue HWND est, car elle est appelée à partir du code qui effectue la longue opération. Je suppose que je peux définir une variable HWND de portée de fichier et y copier la boîte de dialogue HWND à partir de la procédure de boîte de dialogue juste avant le début de l'opération longue. De cette façon, la fonction de rappel pourrait avoir accès à la boîte de dialogue HWND. Mais cela semble terriblement kludgy: y at-il une manière plus élégante?
La procédure de boîte de dialogue est bloquée pendant la durée de l'opération. Cela n'a pas d'importance parce que c'est un système embarqué. Mais Windows affichera-t-il même le texte dans la boîte de dialogue si j'émets un SendDlgItemMessage() pendant que la procédure de boîte de dialogue est bloquée?
modifier J'ai fait quelques enquêtes à l'aide SendDlgItemMessage() pour envoyer un WM_SETTEXT à un contrôle de texte statique sur une boîte de dialogue. Le texte est affiché immédiatement même si la procédure de boîte de dialogue est bloquée.
Toutes les bonnes choses. Je vais avec la route du pointeur opaque et semble bien fonctionner. Point pris sur le fil de travail; Je ferais certainement ceci si c'était une "vraie" application par opposition à une application intégrée où il n'y aurait pas de souris ou de clavier. –