Comment pourrais-je créer un message de windows?
Notre projet est en cours d'exécution sur Windows CE 6.0 et est écrit en C++ . Nous avons quelques problèmes avec le code , et nous sommes incapables de débogage . Nous avons également constaté que si dans notre application, nous créer des threads et essayer de printf de leur , la sortie ne s'affiche pas . La seule sortie qui apparaît est celui du thread principal . Je voudrais faire la chose suivante :
- créer un message de windows
- utiliser comme il WPARAM de l'adresse d'un char*, je veux montrer à l'écran
- utiliser comme il est LPARAM la longueur du char* je veux montrer sur l'écran
- envoyer le message
- processus quand il vient , de sorte qu'il imprime au char*
Comment pourrais-je créer le message windows personnalisé ? Quels sont les types de WPARAM et LPARAM ? Est-il possible de faire ce que je viens d'écrire ?
Grâce
Une MessageBox ne fonctionne pas pour vous dans cette situation? Êtes-vous à l'aide de MFC?
Ce n'est pas une option . Il y aura beaucoup de "cordes"
Ce n'est pas une option . Il y aura beaucoup de "cordes"
OriginalL'auteur Geo | 2008-11-16
Vous devez vous connecter pour publier un commentaire.
Il est certainement possible de faire ce que vous décrivez. Vous n'avez pas besoin de faire quoi que ce soit pour créer un message personnalisé pour la communication au sein de votre application: assurez-vous que le code qui envoie le message et le code qui reçoit le message d'accord sur ce que le numéro de message est réellement, et d'utiliser un numéro de message qui n'a pas de chevauchement avec les numéros de Windows. Il y a un RegisterWindowMessage() de la fonction, mais ce n'est pas nécessaire d'obtenir un numéro de message qui est unique dans l'ensemble de système d'exploitation, donc utilisé pour les communications inter-processus.
La façon la plus simple d'y parvenir est d'avoir un fichier d'en-tête quelque part contenant votre message personnalisé nombres, en commençant avec WM_USER et la numérotation vers le haut, comme ceci:
WPARAM et LPARAM types sont définis lorsque vous incluez "de windows.h", donc peut avoir différents types de systèmes différents. Pour les systèmes d'exploitation 32 bits, ils sont généralement de nombres entiers de 32 bits. Si vous êtes juste en utilisant le message à des fins de test, qui est généralement assez bon, et vous pouvez coller ce que vous voulez là-bas. Pour la production de code, cependant, vous devriez être plus prudent: WPARAM est vraiment pour "integer", semblables à des données, et LPARAM pour "pointeur", semblables à des données. Dans Win64, par exemple, LPARAM est assez long pour contenir une version 64 bits de pointeur, mais WPARAM ne détient qu'un entier de 32 bits. Pour passer plus de données que juste un entier et un pointeur, je ne l'utiliserais lParam pour passer un pointeur vers une sorte de structure contenant tous mes arguments.
Après avoir dit tout cela, elle sonne comme une manière compliquée de l'obtention de la sortie de débogage. Avez-vous essayé d'utiliser le OutputDebugString() appel de l'API? Le débogage ou le fil de printf() appel?
Spécifique à l'Application messages devraient être fondées sur WM_APP, pas WM_USER. Voir blogs.msdn.com/oldnewthing/archive/2003/12/02/55914.aspx
En fait, l'application messages privés être dans le
WM_APP+x
gamme.WM_USER+x
les messages sont définis par l'auteur d'une classe de fenêtre, ou plus formellement, par qui que ce soit appeléRegisterClassEx
. Re-à l'aide de cette gamme est d'aller à la pause. Les détails peuvent être trouvés à l'adresse Sur les Messages et les Files d'attente de Messages: Défini par l'Application Messaages.OriginalL'auteur DavidK