/* BUTTON.C */ #include #include LOCAL_D WSERV_SPEC wSpec; LOCAL_D UINT wMainWid; LOCAL_D UINT FontID; LOCAL_D UINT FontStyle; LOCAL_D G_FONT_INFO FontInfo; LOCAL_C VOID SetFont(INT fid,INT style) { gFontInfo(FontID=fid,FontStyle=style,&FontInfo); } LOCAL_C VOID SetGC(VOID) { G_GC gc; gc.font=FontID; gc.style=FontStyle; gSetGC(0,G_GC_MASK_FONT|G_GC_MASK_STYLE,&gc); } LOCAL_C VOID DrawButton(INT state) { P_RECT rect; rect.tl.x=20; rect.tl.y=(40-2)-FontInfo.height; rect.br.x=140; rect.br.y=(40+2)+FontInfo.height; wDrawButton(&rect,"Press any key",state); } LOCAL_C VOID MainEventLoop(VOID) { WS_EV event; for (;;) { wGetEventWait(&event); if (event.type==WM_REDRAW) { wBeginRedrawWinGC0(wMainWid); gBorder(W_BORD_SHADOW_D|W_BORD_SHADOW_ON); SetGC(); DrawButton(FALSE); wEndRedraw(); continue; } if (event.type==WM_KEY) { gCreateTempGC0(wMainWid); SetGC(); DrawButton(TRUE); wFlush(); p_sleep(5l); DrawButton(FALSE); gFreeTempGC(); } } } GLDEF_C VOID main(VOID) { wConnect(&wSpec,0,W_CONNECT_PRIORITY); wMainWid=wCreateWindow(0,0,0,1); wInitialiseWindowTree(wMainWid); SetFont(WS_FONT_SYSTEM,G_STY_BOLD); MainEventLoop(); }