int main() { HMQ hmq; QMSG qmsg; ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU | FCF_SIZEBORDER | FCF_MINMAX | FCF_SHELLPOSITION | FCF_TASKLIST | FCF_ICON | FCF_MENU; CHAR szClientClass[] = "CLIENT"; hab = WinInitialize (0); hmq = WinCreateMsgQueue (hab, 0); WinRegisterClass (hab, szClientClass, (PFNWP)ClientWndProc, 0, 0); WinLoadString (hab, 0, ID_APPNAME, sizeof(szTitle), szTitle); hWndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE, &flFrameFlags, szClientClass, szTitle, 0, 0, ID_APPNAME, &hWndClient); while (WinGetMsg (hab, &qmsg, 0, 0, 0)) WinDispatchMsg (hab, &qmsg); WinDestroyWindow (hWndFrame); WinDestroyMsgQueue (hmq); WinTerminate (hab); return (0); }
int main() { ULONG fl = FCF_SIZEBORDER | FCF_TASKLIST | FCF_ICON | FCF_TITLEBAR | FCF_SYSMENU | FCF_MINMAX | FCF_SHELLPOSITION; static CHAR szClass [] = "Tray Example" ; HMQ hmq ; QMSG qmsg ; LONG i; hab = WinInitialize (0) ; hmq = WinCreateMsgQueue (hab, 0) ; WinRegisterClass (hab, (PSZ)szClass, (PFNWP)windowproc, CS_SIZEREDRAW, 0) ; hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE, &fl, (PSZ)szClass, (PSZ)szClass, 0L, NULL, 100, &hwndClient) ; for(i=100;i<=104;i++) hIcon[i-100] = WinLoadPointer(HWND_DESKTOP,NULLHANDLE,i); while (WinGetMsg (hab, &qmsg, NULL, 0, 0)) WinDispatchMsg (hab, &qmsg) ; WinDestroyWindow (hwndFrame) ; WinDestroyMsgQueue (hmq) ; WinTerminate (hab) ; return 0 ; }
/**************************************************************************** Main Program start *****************************************************************************/ int main() { HMQ hmq; QMSG qmsg; hab = WinInitialize (0); hmq = WinCreateMsgQueue (hab, 0); hWndFrame = WinLoadDlg (HWND_DESKTOP, HWND_DESKTOP, MainDlgProc, 0, IDD_CLOCK,NULL); TitleDefProc = WinSubclassWindow(WinWindowFromID(hWndFrame, FID_TITLEBAR), (PFNWP)TitleBarProc ); SysMenuDefProc = WinSubclassWindow(WinWindowFromID(hWndFrame, FID_SYSMENU), (PFNWP)SysMenuProc ); SysMenuButton = WinLoadPointer (HWND_DESKTOP, 0, IDD_CLOCK); WinQueryPointerInfo(SysMenuButton,&PointerInfo); WinSendMsg (hWndFrame, WM_SETICON, (MPARAM)SysMenuButton, NULL); while (WinGetMsg (hab, &qmsg, 0, 0, 0)) WinDispatchMsg (hab, &qmsg); WinDestroyWindow (hWndFrame); WinDestroyMsgQueue (hmq); WinTerminate (hab); return (0); }
VOID PumpMessageQueue( VOID ) { char class_name[80]; QMSG qmsg; ERRORID err; ULONG ulCount; for( ;; ) { DosWaitEventSem( PumpMessageSem, SEM_INDEFINITE_WAIT ); DosResetEventSem( PumpMessageSem, &ulCount ); WinThreadAssocQueue( GUIGetHAB(), GUIPMmq ); while ( WinGetMsg( GUIGetHAB(), &qmsg, 0L, 0, 0 ) ) { WinQueryClassName( qmsg.hwnd, sizeof( class_name ), class_name ); if (strcmp( class_name, "GUIClass" ) == 0 || strcmp( class_name, "WTool" ) == 0) { WinDefWindowProc( qmsg.hwnd, qmsg.msg, qmsg.mp1, qmsg.mp2 ); } else { WinDispatchMsg( GUIGetHAB(), &qmsg ); } } WinThreadAssocQueue( GUIGetHAB(), NULL ); err = WinGetLastError( GUIGetHAB() ); DosPostEventSem( PumpMessageDoneSem ); } }
VOID _System threadTimerMgr(ULONG ul) { HMQ hmq; QMSG qmsg; DosSetPriority(PRTYS_THREAD, PRTYC_FOREGROUNDSERVER, 31, 0); // inizializzazione hmq = WinCreateMsgQueue((g.timerThrd.hab = WinInitialize(0)), 0); WinCancelShutdown(hmq, TRUE); // registra classe WC_TIMERMGRCLASS if (!WinRegisterClass(g.timerThrd.hab, WC_TIMERMGRCLASS, threadTimerMgrProc, 0L, 0L)) terminateTimerMgr(hmq); // crea l'object window if (!(g.timerThrd.hwnd = WinCreateWindow(HWND_OBJECT, WC_TIMERMGRCLASS, NULL, 0, 0, 0, 0, 0, NULLHANDLE, HWND_BOTTOM, 0, NULL, NULL))) terminateTimerMgr(hmq); // message loop while (WinGetMsg(g.timerThrd.hab, &qmsg, NULLHANDLE, 0, 0)) WinDispatchMsg(g.timerThrd.hab, &qmsg); // terminazione terminateTimerMgr(hmq); }
int main (void) { static CHAR szClientClass [] = "EndJoin" ; static ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU | FCF_SIZEBORDER | FCF_MINMAX | FCF_SHELLPOSITION | FCF_TASKLIST ; HAB hab ; HMQ hmq ; HWND hwndFrame, hwndClient ; QMSG qmsg ; hab = WinInitialize (0) ; hmq = WinCreateMsgQueue (hab, 0) ; WinRegisterClass (hab, szClientClass, ClientWndProc, CS_SIZEREDRAW, 0) ; hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE, &flFrameFlags, szClientClass, NULL, 0L, 0, 0, &hwndClient) ; while (WinGetMsg (hab, &qmsg, NULLHANDLE, 0, 0)) WinDispatchMsg (hab, &qmsg) ; WinDestroyWindow (hwndFrame) ; WinDestroyMsgQueue (hmq) ; WinTerminate (hab) ; return 0 ; }
int main(int argc,char **argv) { ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU | FCF_TASKLIST | FCF_SIZEBORDER | FCF_SHELLPOSITION | FCF_MINBUTTON | FCF_MAXBUTTON; QMSG qmsg; HAB hab; HMQ hmq; hab = WinInitialize(0); if (hab == (HAB)0) return 1; hmq = WinCreateMsgQueue(hab,0); if (hmq == (HMQ)0) return 1; WinRegisterClass(hab,"HelloWnd",(PFNWP)HelloWndProc,CS_SIZEREDRAW,0); HelloWnd = WinCreateStdWindow(HWND_DESKTOP,WS_VISIBLE,&flFrameFlags,"HelloWnd","Hello world",0L,0/*NULLHANDLE*/,ID_PRIMWIN,&HelloWndClient); if (HelloWnd == (HWND)0 || HelloWndClient == (HWND)0) return 1; while (WinGetMsg(hab,&qmsg,0/*NULLHANDLE*/,0,0)) WinDispatchMsg(hab,&qmsg); WinDestroyWindow(HelloWnd); WinDestroyMsgQueue(hmq); WinTerminate(hab); return 0; }
VOID _Optlink fntMoveThread(PTHREADINFO pti) { // give ourselves higher priority... // otherwise we can't compete with Netscape and Win-OS/2 windows. DosSetPriority(PRTYS_THREAD, PRTYC_REGULAR, PRTYD_MAXIMUM, 0); // current thread if ( (G_pHookData->hwndPagerMoveThread = WinCreateWindow(HWND_OBJECT, WC_STATIC, "", 0, 0, 0, 0, 0, 0, HWND_BOTTOM, 0, NULL, NULL)) && (G_pfnwpMoveStaticOrig = WinSubclassWindow(G_pHookData->hwndPagerMoveThread, fnwpMoveThread)) ) { QMSG qmsg; while (WinGetMsg(pti->hab, &qmsg, NULLHANDLE, 0, 0)) WinDispatchMsg(pti->hab, &qmsg); } // destroy the object window V0.9.12 (2001-05-12) [umoeller] WinDestroyWindow(G_pHookData->hwndPagerMoveThread); G_pHookData->hwndPagerMoveThread = NULLHANDLE; }
void main (void) { QMSG qmsg; HMQ hmq; HWND hwndClient; ULONG flFrameFlags; WinInitialize(0); hmq = WinCreateMsgQueue(hab, 0); /* get access to shared memory */ DosGetNamedSharedMem((PVOID*)&memptr, MEM_NAME, PAG_READ); if (!memptr) WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, " FreeType/2 is not running!", "Error", 0, MB_OK | MB_ERROR); else { meminfo = memptr->address; if (meminfo->signature != 0x46524545) WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, " FreeType/2 is not running!", "Error", 0, MB_OK | MB_ERROR); else { flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU | FCF_TASKLIST ; WinRegisterClass(hab, "MyClass", (PFNWP) ClientWndProc, CS_SIZEREDRAW, 0); hwndFrame = WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE, &flFrameFlags, "MyClass", "FreeType/2 Heap Usage", 0, (HMODULE) NULL, 0, &hwndClient); WinSetVisibleRegionNotify(hwndClient, TRUE); /* make titlebar text look better */ WinSetPresParam(WinWindowFromID(hwndFrame, FID_TITLEBAR), PP_FONTNAMESIZE, 9, (PVOID)"8.Helv"); WinSetWindowPos(hwndFrame, NULLHANDLE, 0, 0, 350, 42, SWP_MOVE | SWP_SIZE | SWP_SHOW); while (WinGetMsg(hab, &qmsg, (HWND) NULL, 0, 0)) WinDispatchMsg(hab, &qmsg); WinSetVisibleRegionNotify(hwndClient, FALSE); } } /* free shared memory block */ DosFreeMem(memptr); WinDestroyWindow(hwndFrame); WinDestroyMsgQueue(hmq); WinTerminate(hab); }
int main( void) { HAB hab = 0; HMQ hmq = 0; HWND hwnd = 0; int nRtn = 8; QMSG qmsg; do { Morph(); hab = WinInitialize( 0); if (!hab) break; hmq = WinCreateMsgQueue( hab, 0); if (!hmq) break; // avoid compatibility problems // RWSFULLVERSION for RwsTest v0.80 is 0x08000100 if (RwsQueryVersion( 0) < RWSFULLVERSION) { WinMessageBox( HWND_DESKTOP, 0, "Please use a newer version of the RWS08 dlls", "FPos", 1, MB_OK | MB_ERROR | MB_MOVEABLE); break; } hwnd = WinLoadDlg( HWND_DESKTOP, // parent-window NULLHANDLE, // owner-window MainWndProc, // dialog proc NULLHANDLE, // EXE module handle IDD_MAIN, // dialog id NULL); // pointer to create params if (!hwnd) break; while (WinGetMsg( hab, &qmsg, NULLHANDLE, 0, 0)) WinDispatchMsg( hab, &qmsg); nRtn = 0; } while (fFalse); if (nRtn) DosBeep( 440, 150); if (hwnd) WinDestroyWindow( hwnd); if (hmq) WinDestroyMsgQueue( hmq); if (hab) WinTerminate( hab); return (nRtn); }
INT main(VOID) { HWND hwnd; HAB hab; HMQ hmq; QMSG qmsg; HWND hHlp; hmq = WinCreateMsgQueue(hab = WinInitialize(0), 0); hwnd = WinLoadDlg(HWND_DESKTOP, // parent NULLHANDLE, // owner dlgProc, // dialog window proc NULLHANDLE, // module handle ID_MAIN, // dialog template ID NULL); // application data pointer if (hwnd) { hHlp = initHelp(hwnd); while (WinGetMsg(hab, &qmsg, NULLHANDLE, 0, 0)) WinDispatchMsg(hab, &qmsg); endHelp(hwnd, hHlp); } WinDestroyWindow(hwnd); WinDestroyMsgQueue(hmq); WinTerminate(hab); return 0; } /* end main */
/*-------------------------------------------------- * Dispatch messages *--------------------------------------------------*/ void PMGUI::run() { QMSG qms; HAB cur_hab = hab(); while( WinGetMsg( cur_hab, &qms, 0, 0, 0 )) WinDispatchMsg( cur_hab, &qms ); }
void OS2Loop::run() { QMSG qm; // Compute windows message list while( WinGetMsg( 0, &qm, NULLHANDLE, 0, 0 )) WinDispatchMsg( 0, &qm ); }
void PM_mainloop(VOID *arg) { SIZEL sizelHps = {0,0}; HAB hab; // Anchor Block to PM HMQ hmq; // Handle to Msg Queue HDC hdc; // Handle to Device (Window-Screen) QMSG qmsg; // Msg Queue Event video_canvas_t *ptr=(video_canvas_t*)arg; hab = WinInitialize(0); // Initialize PM hmq = WinCreateMsgQueue(hab, 0); // Create Msg Queue // 2048 Byte Memory (Used eg for the Anchor Blocks WinRegisterClass(hab, szClientClass, PM_winProc, CS_SIZEREDRAW, 2048); (*ptr)->hwndFrame = WinCreateStdWindow(HWND_DESKTOP, WS_ANIMATE, &flFrameFlags, szClientClass, szTitleBarText, 0L, 0, 0, &((*ptr)->hwndClient)); WinSetWindowPos((*ptr)->hwndFrame, HWND_TOP, 0, 0, (*ptr)->width*stretch, (*ptr)->height*stretch+ WinQuerySysValue(HWND_DESKTOP, SV_CYTITLEBAR), // +1 with gcc? SWP_SIZE|SWP_SHOW|SWP_ZORDER|SWP_ACTIVATE); // Make visible, resize, top window WinSetWindowPtr((*ptr)->hwndClient, QWL_USER, (VOID*)(*ptr)); // -------------------- // maybe ---> WM_CREATE // -------------------- hdc = WinOpenWindowDC((*ptr)->hwndFrame); (*ptr)->hps = GpiCreatePS(WinQueryAnchorBlock((*ptr)->hwndFrame), hdc, &sizelHps, PU_PELS|GPIF_DEFAULT|GPIT_MICRO|GPIA_ASSOC); // GPIT_NORMAL does also work with vac++ (*ptr)->pbmi = lib_calloc(1, 16+sizeof(RGB2)*256); (*ptr)->pbmi->cbFix = 16; // Size of cbFix, cPlanes, cBitCount = Begin of RGB2 (*ptr)->pbmi->cPlanes = 1; (*ptr)->pbmi->cBitCount = 8; // Using 8-bit color mode (*ptr)->palette=(RGB2*)((ULONG)(*ptr)->pbmi+(*ptr)->pbmi->cbFix); vidlog("pbmiAllocated",0); (*ptr)->pbmi_initialized = TRUE; // All stuff for pbmi created // DosReleaseMutexSem(hmtx); // gfx init end //----------------------- while (WinGetMsg (hab, &qmsg, NULLHANDLE, 0, 0)) WinDispatchMsg (hab, &qmsg) ; // (*ptr)->pbmi_initialized = FALSE; DosRequestMutexSem(hmtx, SEM_INDEFINITE_WAIT); GpiDestroyPS((*ptr)->hps); WinDestroyWindow ((*ptr)->hwndFrame); // why was this commented out? --> WM_CLOSE ?? WinDestroyMsgQueue(hmq); // Destroy Msg Queue WinTerminate (hab); // Release Anchor to PM lib_free((*ptr)->pbmi); // is this the right moment to do this??? // lib_free(*ptr); // Vice crashes... why??? This must be done in the main thread! exit(0); // Kill VICE, All went OK }
int main(int argc, char **argv) { ULONG FrameFlags = FCF_TITLEBAR | FCF_SYSMENU | FCF_SIZEBORDER | FCF_HIDEBUTTON | FCF_SHELLPOSITION | FCF_TASKLIST; HAB hab; HMQ hmq; HWND Client; QMSG qmsg; arglist args; int python_tid; /* init PM and create message queue */ hab = WinInitialize(0); hmq = WinCreateMsgQueue(hab, 0); /* create a (hidden) Window to house the window procedure */ args.Frame = WinCreateStdWindow(HWND_DESKTOP, 0, &FrameFlags, NULL, "PythonPM", 0L, 0, 0, &Client); /* run Python interpreter in a thread */ args.argc = argc; args.argv = argv; args.running = 0; if (-1 == (python_tid = _beginthread(PythonThread, NULL, 1024 * 1024, &args))) { /* couldn't start thread */ WinAlarm(HWND_DESKTOP, WA_ERROR); PythonRC = 1; } else { /* process PM messages, until Python exits */ while (WinGetMsg(hab, &qmsg, NULLHANDLE, 0, 0)) WinDispatchMsg(hab, &qmsg); if (args.running > 0) DosKillThread(python_tid); } /* destroy window, shutdown message queue and PM */ WinDestroyWindow(args.Frame); WinDestroyMsgQueue(hmq); WinTerminate(hab); return PythonRC; }
main(int argc, char *argv[], char *envp[]) { HAB hab; HMQ hmq; QMSG qmsg; char szBuf[MAX_BUF]; ATOM atom; hab = WinInitialize( 0 ); hmq = WinCreateMsgQueue( hab, 0 ); atom = WinAddAtom(WinQuerySystemAtomTable(), CLASS_NAME); if(Initialize(0, argv[0])) { WinPostQueueMsg(0, WM_QUIT, 1, 0); } else if(!InitApplication(0)) { char szEFailed[MAX_BUF]; if(NS_LoadString(0, IDS_ERROR_FAILED, szEFailed, MAX_BUF) == WIZ_OK) { sprintf(szBuf, szEFailed, "InitApplication()."); PrintError(szBuf, ERROR_CODE_SHOW); } WinPostQueueMsg(0, WM_QUIT, 1, 0); } else if(ParseUninstallIni(argc, argv)) { WinPostQueueMsg(0, WM_QUIT, 1, 0); } else if(ugUninstall.bUninstallFiles == TRUE) { if(diUninstall.bShowDialog == TRUE) hDlgUninstall = InstantiateDialog(hWndMain, DLG_UNINSTALL, diUninstall.szTitle, DlgProcUninstall); else ParseAllUninstallLogs(); } if((ugUninstall.bUninstallFiles == TRUE) && (diUninstall.bShowDialog == TRUE)) { while ( WinGetMsg( hab, &qmsg, NULLHANDLE, 0, 0 ) ) WinDispatchMsg( hab, &qmsg ); } /* Do clean up before exiting from the application */ DeInitialize(); WinDeleteAtom(WinQuerySystemAtomTable(), atom); WinDestroyMsgQueue( hmq ); WinTerminate( hab ); }
/****************************************************************************** * Name : main * * Description : This function calls the Intialize procedure to prepare * everything for the program's operation, enters the * message loop, then call Finalize to shut everything down * when the program is terminated. * * Concepts : None. * * MMPM/2 API's : None. * * Parameters : argc - Number of parameters passed into the program. * argv - Command line parameters. * * Return : None. * *************************************************************************/ void main(int argc, char *argv[]) { InitializeDialog(); /* Handle the messages: */ while(WinGetMsg(hab,&qmsg,0,0,0)) WinDispatchMsg(hab,&qmsg); Finalize(); }
/********************** Start of main procedure ***********************/ void main( ) { HMQ hmq; /* Message queue handle */ HWND hwndClient; /* Client area window handle */ HWND hwndFrame; /* Frame window handle */ QMSG qmsg; /* Message from message queue */ ULONG flCreate; /* Window creation control flags*/ Hab = WinInitialize( NULL ); /* Initialize PM */ hmq = WinCreateMsgQueue( Hab, 0 ); /* Create a message queue */ WinRegisterClass( /* Register window class */ Hab, /* Anchor block handle */ "MyWindow", /* Window class name */ MyWindowProc, /* Address of window procedure */ CS_SIZEREDRAW, /* Class style */ 0 /* No extra window words */ ); flCreate = FCF_STANDARD & /* Set frame control flags to */ ~FCF_SHELLPOSITION; /* standard except for shell */ /* positioning. */ hwndFrame = WinCreateStdWindow( HWND_DESKTOP, /* Desktop window is parent */ 0L, /* No frame styles */ &flCreate, /* Frame control flag */ "MyWindow", /* Client window class name */ "", /* No window text */ 0L, /* No special class style */ NULL, /* Resource is in .EXE file */ ID_WINDOW, /* Frame window identifier */ &hwndClient /* Client window handle */ ); WinSetWindowPos( hwndFrame, /* Shows and activates frame */ HWND_TOP, /* window at position 100, 100, */ 100, 100, 400, 200, /* and size 200, 200. */ SWP_SIZE | SWP_MOVE | SWP_ACTIVATE | SWP_SHOW ); /************************************************************************/ /* Get and dispatch messages from the application message queue */ /* until WinGetMsg returns FALSE, indicating a WM_QUIT message. */ /************************************************************************/ while( WinGetMsg( Hab, &qmsg, NULL, 0, 0 ) ) { WinDispatchMsg( Hab, &qmsg ); } WinDestroyWindow( hwndFrame ); /* Tidy up... */ WinDestroyMsgQueue( hmq ); /* and */ WinTerminate( Hab ); /* terminate the application */ }
BOOL APIENTRY WprogressBar(HWND hParent, HWND hOwner, PPROGRESSDLG ppd) { QMSG qmsg; HWND hwnd; PPRGSAPPDATA pad; BOOL rc = FALSE; // allocate storage for application data if (!(pad = (PPRGSAPPDATA)malloc(sizeof(PRGSAPPDATA)))) return FALSE; memset(pad, 0, sizeof(PRGSAPPDATA)); pad->ppd = ppd; // ottiene tempo di inizio pad->start = WinGetCurrentTime(pad->hab = WinQueryAnchorBlock(hOwner)) / 1000; // window handles if (ppd->fl & PRGSS_BITMAP) { SIZEL szl; WqueryBitmapSize(pad->ppd->hbmp, &szl); pad->cxbmp = szl.cx; } /* endif */ if (NULLHANDLE != (hwnd = WinLoadDlg(hParent, hOwner, ProgressDlgProc, hmod, DLG_PROGRESS, pad))) { if (!ppd->pszPrgrss) ppd->pszPrgrss = SZ_PROGRESS; if (!ppd->pszTime) ppd->pszTime = SZ_ELAPSTIME; if (ppd->pszStop) WinSetDlgItemText(hwnd, BTN_STOP, ppd->pszStop); pad->hOwner = WinQueryWindow(hwnd, QW_OWNER); WinEnableWindow(pad->hOwner, FALSE); for(;;) { if (WinGetMsg(pad->hab, &qmsg, NULLHANDLE, 0, 0)) { // loop standard if (qmsg.msg == PRGSM_END && qmsg.hwnd == hwnd) { if (pad->qQuit.msg) WinPostMsg(pad->qQuit.hwnd, pad->qQuit.msg, pad->qQuit.mp1, pad->qQuit.mp2); break; } // end if WinDispatchMsg(pad->hab, &qmsg); } else { // WM_QUIT pad->qQuit = qmsg; if(qmsg.hwnd == NULLHANDLE) // SHUTDOWN WinPostMsg(hwnd, WM_CLOSE, MPFROMLONG(TRUE), NULL); else if(qmsg.hwnd == HWNDFROMMP(qmsg.mp2)) // TASKLIST WinPostMsg(hwnd, WM_CLOSE, 0L, 0L); else // chiusura regolare: termina break; } // end if } // end forever WinSetFocus(HWND_DESKTOP, hOwner); WinDestroyWindow(hwnd); WinEnableWindow(pad->hOwner, TRUE); rc = TRUE; } // end if free(pad); return rc; }
int winmain() { HAB hab = NULLHANDLE; HMQ hmq = NULLHANDLE; QMSG qmsg; HWND hwndFrame = NULLHANDLE; HWND hwndClient = NULLHANDLE; ULONG ctlData = FCF_TITLEBAR | FCF_SYSMENU | FCF_SIZEBORDER | FCF_MINMAX | FCF_TASKLIST; do { if ((hab = WinInitialize(0)) == NULLHANDLE) break; if ((hmq = WinCreateMsgQueue(hab,0)) == NULLHANDLE) break; if (!WinRegisterClass(hab, APPCLASS, ClientWndProc, CS_SIZEREDRAW, 4)) break; // Register the HanMLE and HanInputAutomata window class if (!RegisterHanAutomataClass(hab)) break; if (!RegisterHanEntryFieldControl(hab)) break; if ((hwndFrame = WinCreateStdWindow( HWND_DESKTOP, WS_VISIBLE, &ctlData, APPCLASS, APPTITLE, 0, NULLHANDLE, ID_APP, &hwndClient )) == NULLHANDLE ) { printf("errorcode: %x\n",WinGetLastError(hab)); break; } WinSetWindowPos(hwndFrame,NULLHANDLE, 300,300,300,200, SWP_MOVE|SWP_SIZE); houtInit(hab,256); while (WinGetMsg(hab, &qmsg, NULLHANDLE, 0, 0)) { WinDispatchMsg(hab, &qmsg); } houtClose(); } while (FALSE); if (hmq != NULLHANDLE) WinDestroyMsgQueue(hmq); if (hab != NULLHANDLE) WinTerminate(hab); return 0; }
void _Optlink threadmain( void * pv ) { BOOL bSuccess; HAB hab; HMQ hmq; QMSG qmsg; PGLOBALS pg; // cast and set the void pointer coming in pg = (PGLOBALS) pv; // thread initialization hab = WinInitialize( 0 ); hmq = WinCreateMsgQueue( hab, 0 ); bSuccess = WinRegisterClass( hab, OBJECTCLASSNAME, ObjectWinProc, 0, sizeof( PGLOBALS ) ); pmassert( hab, bSuccess ); // create a window where its parent is the PM object window pg->hwndObject = WinCreateWindow( HWND_OBJECT, // parent OBJECTCLASSNAME, // class name "", // name 0, // style 0, // x,y 0, 0, // cx,cy 0, HWND_OBJECT, // owner HWND_BOTTOM, // position behind this window (nop) 0, // id (PVOID)pg, // globals pointer as control data NULL ); // presparams pmassert( hab, pg->hwndObject ); // WM_CREATE processing completed; application has completely initialized WinPostMsg( pg->hwndClient, WM_USER_ACK, (MPARAM)WM_CREATE, 0 ); // dispatch messages; these messages will be mostly user-defined messages while( WinGetMsg ( hab, &qmsg, 0, 0, 0 )) { WinDispatchMsg ( hab, &qmsg ); } // wrap up WinDestroyWindow ( pg->hwndObject ); WinDestroyMsgQueue ( hmq ); WinTerminate ( hab ); return; }
void ProcessWindowsMessages() { QMSG qmsg; HAB hab; hab = WinInitialize(0); while(WinPeekMsg(hab, &qmsg, (HWND) NULL, 0, 0, PM_REMOVE)) { WinDispatchMsg(hab, &qmsg); } WinTerminate(hab); }
// ------------------------------------------------------------------------------------------------------------ int main( int argc, char **argv ) { HMQ hmq; QMSG qmsg; ULONG ulWork; SWP swp; LONG cx; // initialize globals struct to defaults memset( &globals, 0, sizeof( globals )); strcpy( globals.szRexxFileName, "DRAW.CMD" ); // parameter is a REXX filename if( argc > 1 ) { strcpy( globals.szRexxFileName, argv[ 1 ] ); } // PM application init globals.hab = WinInitialize( 0 ); hmq = WinCreateMsgQueue( globals.hab, 0); // create a frame window with listbox to display REXX diagnostic output ulWork = FCF_SYSMENU | FCF_TITLEBAR | FCF_SIZEBORDER | FCF_MINMAX | FCF_ICON | FCF_TASKLIST; globals.hwndOutputFrame = WinCreateStdWindow( HWND_DESKTOP, 0, &ulWork, WC_LISTBOX, OUTPUTCAPTION, LS_NOADJUSTPOS, (HMODULE)0, ID_RXDRAW, &globals.hwndOutputListbox ); assert( globals.hwndOutputFrame ); assert( globals.hwndOutputListbox ); // create a frame window to display REXX graphical output WinRegisterClass( globals.hab, CLASSNAME, (PFNWP)ClientWinProc, CS_SIZEREDRAW, 0 ); ulWork = FCF_SYSMENU | FCF_TITLEBAR | FCF_SIZEBORDER | FCF_MINMAX | FCF_MENU | FCF_ICON | FCF_TASKLIST; globals.hwndFrame = WinCreateStdWindow( HWND_DESKTOP, 0, &ulWork, CLASSNAME, CAPTION, 0, (HMODULE)0, ID_RXDRAW, &globals.hwndClient ); assert( globals.hwndFrame ); assert( globals.hwndClient ); // tile the two windows using shell's preferred placement for one WinQueryTaskSizePos( globals.hab, 0, &swp ); cx = (swp.cx * 2) / 3; ulWork = SWP_SIZE | SWP_MOVE | SWP_ZORDER | SWP_SHOW | SWP_ACTIVATE | SWP_RESTORE; WinSetWindowPos( globals.hwndOutputFrame, HWND_TOP, swp.x+cx, swp.y, swp.cx-cx, swp.cy, ulWork ); WinSetWindowPos( globals.hwndFrame, HWND_TOP, swp.x, swp.y, cx, swp.cy, ulWork ); // message loop while( WinGetMsg( globals.hab, &qmsg, 0, 0, 0 )) WinDispatchMsg( globals.hab, &qmsg ); if( !globals.fCloseMsgSent ) { // got a WM_QUIT without WM_CLOSE; must be shutdown or Close from Window List WinPostMsg( globals.hwndObject, WM_QUIT, 0, 0 ); } // clean up WinDestroyWindow( globals.hwndFrame ); WinDestroyWindow( globals.hwndOutputFrame ); WinDestroyMsgQueue( hmq ); WinTerminate( globals.hab ); DosWaitThread( &globals.tidObject, DCWW_WAIT ); return 0; }
VOID main(int argc, char* argv[]) { QMSG qmsg; if( Initialize(argc, argv)) { while( WinGetMsg( habMain, &qmsg, NULLHANDLE, 0, 0)) WinDispatchMsg( habMain, &qmsg); Finalize(); } else ; { ReportError( habMain); } } /* end main() */
int main( /*******/ void ) { QMSG qmsg; Main_hab = WinInitialize( 0 ); if( !Main_hab ) { return( FALSE ); } Main_hmq = WinCreateMsgQueue( Main_hab, 0 ); if( !Main_hmq ) { return( FALSE ); } if( !init_app( Main_hab ) ) { return( FALSE ); } /* Perform initializations that apply to a specific instance */ three_d_init(); define_room(); if (!init_instance( SWP_SHOW | SWP_ACTIVATE ) ) { finish_room(); three_d_fini(); return( FALSE ); } /* Acquire and dispatch messages until a WM_QUIT message is received. */ while( WinGetMsg( Main_hab, &qmsg, NULL, NULL, NULL) ) { WinDispatchMsg( Main_hab, &qmsg ); } finish_room(); three_d_fini(); if( Main_hmq ) { WinDestroyMsgQueue( Main_hmq ); } if( Main_hab ) { WinTerminate( Main_hab ); } DosExit( EXIT_PROCESS, 0); return( SHORT1FROMMP( qmsg.mp1 ) ); }
APIRET EXPENTRY icqExecuteWindowLoop(HICQ icq, HWND hwnd) { QMSG qmsg; HAB hab = icqQueryAnchorBlock(icq); icqskin_dataBlock.mainWindow = hwnd; DBGTracex(icqDDEQueryServer(icq,"MOZILLA", "WWW_OpenURL")); icqQuerySystray(icq); while(WinGetMsg(hab,&qmsg,0,0,0)) WinDispatchMsg(hab,&qmsg); return 0; }
// usage: WavePlayer [options] [file1 [file2 ... [fileN]]] // v# - volume (0-100) // i# - device index (0 - default) // l - loop (stop playing when closed) int main(int argc, char **argv) { AnchorBlock ab; MessageQueue mq(ab); HWND hwndFrame = NULLHANDLE; HWND hwndClient = NULLHANDLE; FRAMECDATA fcd; PSZ pszClientClass = NULL; PSZ pszTitle = NULL; QMSG qmsg; pbcRegisterClass(); PINITDATA pinitdata = new INITDATA; memset(pinitdata, 0, sizeof(INITDATA)); pinitdata->cbSize = sizeof(INITDATA); pinitdata->argc = argc; pinitdata->argv = argv; fcd.cb = sizeof(fcd); fcd.flCreateFlags = FCF_TITLEBAR | FCF_SYSMENU | FCF_MINMAX | FCF_SIZEBORDER | FCF_ICON | FCF_SHELLPOSITION | FCF_TASKLIST; fcd.hmodResources = NULLHANDLE; fcd.idResources = WIN_MAIN; pszClientClass = new char[128]; WinLoadString(ab, (HMODULE)NULLHANDLE, IDS_CLIENTCLASSNAME, 128, pszTitle); WinRegisterClass(ab, pszClientClass, MainWndProc, CS_SIZEREDRAW, QW_EXTRA); pszTitle = new char[128]; WinLoadString(ab, (HMODULE)NULLHANDLE, IDS_APPNAME, 128, pszTitle); hwndFrame = WinCreateWindow(HWND_DESKTOP, WC_FRAME, pszTitle, WS_ANIMATE, 0, 0, 0, 0, (HWND)NULLHANDLE, HWND_TOP, WIN_MAIN, (PVOID)&fcd, (PVOID)NULL); hwndClient = WinCreateWindow(hwndFrame, pszClientClass, (PSZ)NULL, 0, 0, 0, 0, 0, hwndFrame, HWND_TOP, FID_CLIENT, (PVOID)pinitdata, (PVOID)NULL); delete pszClientClass; delete pszTitle; if(hwndFrame == NULLHANDLE || hwndClient == NULLHANDLE) return 1; while(WinGetMsg(ab, &qmsg, NULL, NULL, NULL)) WinDispatchMsg(ab, &qmsg); WinDestroyWindow(hwndFrame); return 0; }
INT main(INT argc, CHAR *argv[ ]) { QMSG qmsg; /* PM Message Queue Holder */ ULONG flCreateFlags; /* Window Creation Flags */ /* Initialize the program for PM and create the */ /* message queue */ WinSetCp(hmqDriver = WinCreateMsgQueue(hAB = WinInitialize(0), 0), 850); /* Register the main program window class */ if ( !WinRegisterClass(hAB, pszDriverClassName, (PFNWP)DriverWndProc, CS_CLIPCHILDREN | CS_SYNCPAINT | CS_SIZEREDRAW, 0) ) return(1); /* Register the main program window class */ if ( !fRegisterListBox(hAB) ) return(1); /* Create the main program window but do not */ /* show it yet */ flCreateFlags = FCF_TITLEBAR | FCF_NOBYTEALIGN | FCF_SYSMENU | FCF_SIZEBORDER | FCF_SHELLPOSITION; if ( !(hwndDriverFrame = WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE, &flCreateFlags, pszDriverClassName, NULL, 0L, (HMODULE)0L, 0L, &hwndDriver)) ) { return(1); } /* Retrieve and then dispatch messages */ while ( WinGetMsg(hAB, &qmsg, (HWND)NULL, 0, 0) ) WinDispatchMsg(hAB, &qmsg); WinDestroyWindow(hwndDriverFrame); WinDestroyMsgQueue(hmqDriver); /* Notify PM that main program thread not needed */ /* any longer */ WinTerminate(hAB); return(0); }
static void ExitSoftMode( PID pid ) { int i; QMSG qmsg; ForAllTids( pid, ReleaseThreadQueue ); for( i = 0; i < NumAssumedQueues; ++i ) { // wait for NumAssumedQueues WM_QUIT messages while( WinGetMsg( HabDebugger, &qmsg, 0L, 0, 0 ) ) { WinDispatchMsg( HabDebugger, &qmsg ); } } NumAssumedQueues = 0; // DBFocusWnd = WinQueryFocus( HWND_DESKTOP, 0 ); // DBActiveWnd = WinQueryActiveWindow( HWND_DESKTOP, 0 ); // if (WinIsWindow(HabDebugger, AppFocusWnd)) WinSetFocus(HWND_DESKTOP, AppFocusWnd); // if (WinIsWindow(HabDebugger, AppActiveWnd)) WinSetActiveWindow(HWND_DESKTOP, AppActiveWnd); }
//-------------------------------------------------------------------------- // // main() procedure. // --> Initialize PM for this process // --> Create our message queue // --> Create frame and client windows // --> Show the window // --> Enter our message dispatching loop // // // -------------------------------------------------------------------------- void cdecl main(VOID) { HMQ hmq; HWND hwndclient; QMSG qmsg; ULONG flCreateFlags = FCF_BORDER | FCF_SHELLPOSITION | FCF_TASKLIST | FCF_TITLEBAR | FCF_SYSMENU | FCF_SIZEBORDER | FCF_MINMAX | FCF_MENU ; hab = WinInitialize( (USHORT)NULL ); hmq=WinCreateMsgQueue( hab,0 ); WinRegisterClass( hab , XFORM_CLASSNAME , (PFNWP)ClientWndProc , (ULONG)CS_SIZEREDRAW , (USHORT)256 ); hwndFrame = WinCreateStdWindow( HWND_DESKTOP , 0UL , &flCreateFlags , XFORM_CLASSNAME , "Xform - Model transform examples" , WS_VISIBLE , (HMODULE)0 , ID_PIN , &hwndclient ); WinShowWindow( hwndFrame, TRUE ); while ( WinGetMsg( hab,&qmsg, (HWND)0, 0, 0 ) ) { WinDispatchMsg( hab,&qmsg ); } if ( hwndFrame ) { WinDestroyWindow(hwndFrame); WinDestroyMsgQueue(hmq); WinTerminate(hab); } }