TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: Phil Crown
from: Peter Fitzsimmons
date: 1996-07-12 18:42:12
subject: message queue thread

PC> Someone mentioned awhile back that creating a child of HWND_OBJECT to
 PC> create a message queue thread is a level of indirection that is not
 PC> needed, and that it is possible to create a message queue thread without
 PC> creating the child window.

That sounds like something I would say.

 PC> How is this done, by using WinPostQueueMsg() instead of WinPostMsg()
 PC> when sending messages to the message queue thread?

Exactly.  And your worker thread,   instead of registering a window
proceedure,  would look something like this:


 void _Optlink WorkThread(void *arg)
 {
     ARGS *args;
     HAB hab;
     QMSG qmsg;

     args = (ARGS *)arg;
     hab = WinInitialize(0);
     args->hmqWork = WinCreateMsgQueue(hab, 0);

     DosSetPrty(PRTYS_THREAD, PRTYC_IDLETIME, PRTYD_MAXIMUM, 0); //optional

     while (WinGetMsg(hab, &qmsg, NULL, 0, 0)){
         switch(qmsg.msg){
             case WMU_PRINT:
                 disablePrintMenu();
                 DoPrint(args);
                 enablePrintMenu();
                 WinPostMsg(args->hwndDlg, WMR_PRINT1_DONE, 0, 0);
                 break;
             case ...

         }
     }
     WinDestroyMsgQueue(args->hmqWork);
     WinTerminate(hab);
}

--- Maximus/2 3.00
* Origin: Sol 3 * Toronto * V.32 * (905)858-8488 (1:259/414)
SEEN-BY: 50/99 270/101 620/243 625/100 711/401 409 410 413 430 808 809 934
SEEN-BY: 711/955 712/407 515 517 628 713/888 800/1
@PATH: 259/414 400 99 250/99 3615/50 396/1 270/101 712/515 711/808 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.