这篇教程C++ DrawText函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中DrawText函数的典型用法代码示例。如果您正苦于以下问题:C++ DrawText函数的具体用法?C++ DrawText怎么用?C++ DrawText使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了DrawText函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: DisViewBox_OnPaintLRESULT DisViewBox_OnPaint(HWND hwnd, disview_struct *win, WPARAM wParam, LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; SIZE fontsize; TCHAR text[100]; TCHAR txt[100]; RECT rect; int lg; int ht; HDC mem_dc; HBITMAP mem_bmp; u32 nbligne; GetClientRect(hwnd, &rect); lg = rect.right - rect.left; ht = rect.bottom - rect.top; hdc = BeginPaint(hwnd, &ps); mem_dc = CreateCompatibleDC(hdc); mem_bmp = CreateCompatibleBitmap(hdc, lg, ht); SelectObject(mem_dc, mem_bmp); FillRect(mem_dc, &rect, (HBRUSH)GetStockObject(WHITE_BRUSH)); SelectObject(mem_dc, GetStockObject(SYSTEM_FIXED_FONT)); GetTextExtentPoint32(mem_dc, "0", 1, &fontsize); nbligne = ht/fontsize.cy; SetTextColor(mem_dc, RGB(0,0,0)); if((win->mode==1) || ((win->mode==0) && (win->cpu->CPSR.bits.T == 0))) { u32 i; u32 adr; if (win->autoup||win->autogo) win->curr_ligne = (win->cpu->instruct_adr >> 2); adr = win->curr_ligne*4; for(i = 0; i < nbligne; ++i) { u32 ins = _MMU_read32(win->cpu->proc_ID, MMU_AT_DEBUG, adr); des_arm_instructions_set[INDEX(ins)](adr, ins, txt); sprintf(text, "%04X:%04X %08X %s", (int)(adr>>16), (int)(adr&0xFFFF), (int)ins, txt); DrawText(mem_dc, text, -1, &rect, DT_TOP | DT_LEFT | DT_NOPREFIX); rect.top+=fontsize.cy; adr += 4; } if(((win->cpu->instruct_adr&0x0FFFFFFF) >= (win->curr_ligne<<2))&&((win->cpu->instruct_adr&0x0FFFFFFF) <= (win->curr_ligne+(nbligne<<2)))) { HBRUSH brjaune = CreateSolidBrush(RGB(255, 255, 0)); SetBkColor(mem_dc, RGB(255, 255, 0)); rect.top = (((win->cpu->instruct_adr&0x0FFFFFFF)>>2) - win->curr_ligne)*fontsize.cy; rect.bottom = rect.top + fontsize.cy; FillRect(mem_dc, &rect, brjaune); des_arm_instructions_set[INDEX(win->cpu->instruction)](win->cpu->instruct_adr, win->cpu->instruction, txt); sprintf(text, "%04X:%04X %08X %s", (int)((win->cpu->instruct_adr&0x0FFFFFFF)>>16), (int)(win->cpu->instruct_adr&0xFFFF), (int)win->cpu->instruction, txt); DrawText(mem_dc, text, -1, &rect, DT_TOP | DT_LEFT | DT_NOPREFIX); DeleteObject(brjaune); }
开发者ID:rafaelmessias,项目名称:desmume,代码行数:67,
示例2: RenderTextstatic int RenderText( filter_t *p_filter, subpicture_region_t *p_region_out, subpicture_region_t *p_region_in ){ filter_sys_t *p_sys = p_filter->p_sys; int i_font_color, i_font_alpha, i_font_size; uint8_t *p_bitmap; TCHAR *psz_string; int i, i_width, i_height; HBITMAP bitmap, bitmap_bak; BITMAPINFO *p_bmi; RECT rect = { 0, 0, 0, 0 }; /* Sanity check */ if( !p_region_in || !p_region_out ) return VLC_EGENERIC; if( !p_region_in->psz_text || !*p_region_in->psz_text ) return VLC_EGENERIC; psz_string = malloc( (strlen( p_region_in->psz_text )+1) * sizeof(TCHAR) ); if( !psz_string ) return VLC_ENOMEM;#ifdef UNICODE if( mbstowcs( psz_string, p_region_in->psz_text, strlen( p_region_in->psz_text ) * sizeof(TCHAR) ) < 0 ) { free( psz_string ); return VLC_EGENERIC; }#else strcpy( psz_string, p_region_in->psz_text );#endif if( !*psz_string ) { free( psz_string ); return VLC_EGENERIC; } if( p_region_in->p_style ) { i_font_color = __MAX( __MIN( p_region_in->p_style->i_font_color, 0xFFFFFF ), 0 ); i_font_alpha = __MAX( __MIN( p_region_in->p_style->i_font_alpha, 255 ), 0 ); i_font_size = __MAX( __MIN( p_region_in->p_style->i_font_size, 255 ), 0 ); } else { i_font_color = p_sys->i_font_color; i_font_alpha = 255 - p_sys->i_font_opacity; i_font_size = p_sys->i_default_font_size; } SetFont( p_filter, i_font_size ); SetTextColor( p_sys->hcdc, RGB( (i_font_color >> 16) & 0xff, (i_font_color >> 8) & 0xff, i_font_color & 0xff) ); DrawText( p_sys->hcdc, psz_string, -1, &rect, DT_CALCRECT | DT_CENTER | DT_NOPREFIX ); i_width = rect.right; i_height = rect.bottom; p_bmi = malloc(sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*16); memset( p_bmi, 0, sizeof(BITMAPINFOHEADER) ); p_bmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); p_bmi->bmiHeader.biWidth = (i_width+3) & ~3; p_bmi->bmiHeader.biHeight = - i_height; p_bmi->bmiHeader.biPlanes = 1; p_bmi->bmiHeader.biBitCount = 8; p_bmi->bmiHeader.biCompression = BI_RGB; p_bmi->bmiHeader.biClrUsed = 16; for( i = 0; i < 16; i++ ) { p_bmi->bmiColors[i].rgbBlue = p_bmi->bmiColors[i].rgbGreen = p_bmi->bmiColors[i].rgbRed = pi_gamma[i]; } bitmap = CreateDIBSection( p_sys->hcdc, p_bmi, DIB_RGB_COLORS, (void **)&p_bitmap, NULL, 0 ); if( !bitmap ) { msg_Err( p_filter, "could not create bitmap" ); free( psz_string ); return VLC_EGENERIC; } bitmap_bak = SelectObject( p_sys->hcdc, bitmap ); FillRect( p_sys->hcdc, &rect, (HBRUSH)GetStockObject(BLACK_BRUSH) ); if( !DrawText( p_sys->hcdc, psz_string, -1, &rect, DT_CENTER | DT_NOPREFIX ) ) { msg_Err( p_filter, "could not draw text" ); } p_region_out->i_x = p_region_in->i_x; p_region_out->i_y = p_region_in->i_y; Render( p_filter, p_region_out, p_bitmap, i_width, i_height ); SelectObject( p_sys->hcdc, bitmap_bak ); DeleteObject( bitmap ); free( psz_string );//.........这里部分代码省略.........
开发者ID:Italianmoose,项目名称:Stereoscopic-VLC,代码行数:101,
示例3: ASSERTvoid CNSDateEdit::LayoutSubWindows( RECT *pRect ){ HDC hDC = ::GetDC( m_hWnd ); ASSERT( hDC ); int w = pRect->right - pRect->left; RECT r, rcSep, rcNum; TCHAR szSeparator[2], szFormat[30], *s; HFONT hFont = (HFONT)::GetStockObject( ANSI_VAR_FONT ); CFont *fontCur = CFont::FromHandle( hFont ); LOGFONT lf; GetObject( hFont, sizeof(lf), &lf); // Get locale info#ifdef WIN32 VERIFY( GetLocaleInfo( LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, szFormat, 30 ) > 0 ); VERIFY( GetLocaleInfo( LOCALE_USER_DEFAULT, LOCALE_SDATE, szSeparator, 2 ) > 0 );#else static char cName [] = "intl" ; GetProfileString (cName, "sDate", "/", szSeparator, 2) ; int iDate = GetProfileInt (cName, "iDate", 0) ; sprintf( szFormat, "%c%s%c%s%c", iDate == 1 ? 'd' : iDate == 2 ? 'y' : 'M', szSeparator, iDate == 1 ? 'M' : iDate == 2 ? 'M' : 'd', szSeparator, iDate == 1 ? 'y' : iDate == 2 ? 'd' : 'y' );#endif // Get font info ::SetRectEmpty(&rcSep); ::SetRectEmpty(&rcNum); DrawText( hDC, szSeparator, -1, &rcSep, DT_NOCLIP | DT_NOPREFIX | DT_SINGLELINE | DT_CALCRECT ); DrawText( hDC, _T("0"), -1, &rcNum, DT_NOCLIP | DT_NOPREFIX | DT_SINGLELINE | DT_CALCRECT ); ASSERT( w >= ( rcSep.right * 2 + rcNum.right * 8 ) ); // Start on the left int iHeight = lf.lfHeight; int iWidth = 0; r.top = pRect->top - ((pRect->top-pRect->bottom)+iHeight)/2 - 1; r.bottom = r.top + iHeight + 2; r.right = pRect->left + 1; // this loop parses the short date format, creating the fields as it goes s = strtok( szFormat, szSeparator ); for( int i = 0; (i < 3) && (s != NULL); i++ ) { switch ( s[0] ) { case 'M': case 'm': r.left = r.right + 1; r.right = r.left + rcNum.right * 2 + iWidth; // room for two characters m_MonthField.MoveWindow( &r ); m_MonthField.SetFont( fontCur ); m_pFields[i] = &m_MonthField; break; case 'Y': case 'y': r.left = r.right + 1; r.right = r.left + rcNum.right * 4 + iWidth; // room for four characters m_YearField.MoveWindow( &r ); m_YearField.SetFont( fontCur ); m_pFields[i] = &m_YearField; break; case 'D': case 'd': r.left = r.right + 1; r.right = r.left + rcNum.right * 2 + iWidth; // room for two characters m_DayField.MoveWindow( &r ); m_DayField.SetFont( fontCur ); m_pFields[i] = &m_DayField; break; default: DebugBreak(); } if ( i == 0 ) { r.left = r.right + 1; r.right = r.left + rcSep.right; m_Sep1 = r; } else if ( i == 1 ) { r.left = r.right + 1; r.right = r.left + rcSep.right; m_Sep2 = r; } s = strtok( NULL, szSeparator ); } r = *pRect;//.........这里部分代码省略.........
开发者ID:vicamo,项目名称:b2g_mozilla-central,代码行数:101,
示例4: Run//.........这里部分代码省略......... moveList[steps].cmd=menuItem; moveList[steps].num=menuNum; PlaySound(SOUND_BEEP); } } if(keystate & KEY_MENU) { //Switch to second menu mode=2; menuItem=1; menuNum=1; PlaySound(SOUND_BEEP); } } else if (mode == 2) { if(keystate & KEY_INPUT1) { //Switch back to first menu mode=1; menuItem=1; menuNum=1; PlaySound(SOUND_BEEP); } if (keystate & KEY_INPUT2) { //Menu select switch(menuItem) { case 1: { //Free Roam mode=4; PlaySound(SOUND_BEEP); CloseMotors(); } break; case 2: { //Load route LoadRoute(); ClearScreen(); PlaySound(SOUND_BEEP); SetTextColor(white); DrawText(5, 65, "Loading..."); Show(); Sleep(500); //Just so they notice... mode=2; } break; case 3: { //Save route PlaySound(SOUND_BEEP); SaveRoute(); ClearScreen(); SetTextColor(white); DrawText(5, 65, "Saving..."); Show(); Sleep(500); //Just so they notice... mode=2; } break; case 4: { //Recalibrate PlaySound(SOUND_BEEP); mode=3; //Recalibration mode menuNum=1; //Use menuNum as steps throught the process - 1=ready, 2=working } break; case 5: { //About PlaySound(SOUND_GO); mode=5; CloseMotors(); } break; } } if(keystate & KEY_MENU) { //Switch back to first menu mode=1; menuItem=1; menuNum=1;
开发者ID:RorschachUK,项目名称:Trakr,代码行数:67,
示例5: thread_procLRESULT CALLBACK thread_proc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; HDC hdc; RECT rc = {0}; UINT notify_duration = 0; HFONT hOldFont = NULL; switch (message) { case WM_LIBNOTIFYSHOW: if(notification_data) { /* deduce the allowed text width from the max width; see geometry for rationale */ rc.right = notification_window_width_max - (icon_size + (icon_padding * 3)); hdc = GetDC(hWnd); if(hdc) { HFONT hOldFont = NULL; HRGN hRgn = NULL; hOldFont = (HFONT) SelectObject(hdc, font_body); if(hOldFont) { DrawText(hdc, notification_data->body, -1, &rc, DT_CALCRECT | DT_WORDBREAK | DT_EDITCONTROL | DT_NOCLIP | DT_NOPREFIX | DT_EXTERNALLEADING); SelectObject(hdc, hOldFont); } ReleaseDC(hWnd, hdc); if(!hOldFont) return 0; /* exit if font selection failed */ /* calculate the actual bounding rectangle from the DrawText output */ notification_window_height = summary_body_divider + rc.bottom + (icon_padding * 3); notification_window_width = rc.right + icon_size + (icon_padding * 3); /* word count * milliseconds per word */ notify_duration = word_count(notification_data->body) * milliseconds_per_word; /* in case the calculation renders too low a value, replace it with a de facto minimum */ notify_duration = MAX(notify_duration, min_notification_timeout); /* get the screen area uncluttered by the taskbar */ if(SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0)) { LONG window_x = 0, window_y = 0; /* system tray @ right bottom */ if((rc.bottom != GetSystemMetrics(SM_CYSCREEN)) || (rc.right != GetSystemMetrics(SM_CXSCREEN))) { window_x = rc.right - (GetSystemMetrics(SM_CXSCREEN) / window_offset_factor) - notification_window_width; window_y = rc.bottom - (GetSystemMetrics(SM_CYSCREEN) / window_offset_factor) - notification_window_height; } else if(rc.left != 0) /* left bottom */ { window_x = rc.left + (GetSystemMetrics(SM_CXSCREEN) / window_offset_factor); window_y = rc.bottom - (GetSystemMetrics(SM_CYSCREEN) / window_offset_factor) - notification_window_height; } else /* right top */ { window_x = rc.right - (GetSystemMetrics(SM_CXSCREEN) / window_offset_factor) - notification_window_width; window_y = rc.top + (GetSystemMetrics(SM_CYSCREEN) / window_offset_factor); } /* resize and reposition the window */ MoveWindow(hWnd, window_x, window_y, notification_window_width, notification_window_height, TRUE); /* set the new positions to be used by the mouse over hook */ notification_window_rect.left = window_x; notification_window_rect.top = window_y; notification_window_rect.right = window_x + notification_window_width; notification_window_rect.bottom = window_y + notification_window_height; /* make it as a rounded rect. */ hRgn = CreateRoundRectRgn(0, 0, notification_window_width, notification_window_height, rounded_rect_edge, rounded_rect_edge); SetWindowRgn(notification_window, hRgn, TRUE); /* since bRedraw is set to TRUE in SetWindowRgn invalidation isn't required */ /*InvalidateRect(hWnd, NULL, TRUE);*/ /* show the window and set the timers for animation and overall visibility */ ShowWindow(hWnd, SW_SHOWNOACTIVATE); SetTimer(notification_window, TIMER_ANIMATION, fade_duration, NULL); SetTimer(notification_window, TIMER_NOTIFICATION, notify_duration, NULL); } } } break; case WM_LIBNOTIFYCLOSE: /* clean up and reset flags */ { if(hook_mouse_over) { UnhookWindowsHookEx(hook_mouse_over); hook_mouse_over = NULL; } KillTimer(hWnd, TIMER_ANIMATION);//.........这里部分代码省略.........
开发者ID:esotericnomen,项目名称:artha,代码行数:101,
示例6: onDrawItemLRESULT onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam){ LPDRAWITEMSTRUCT lpdis; PNHMenuItem item; PNHMenuWindow data; TEXTMETRIC tm; HGDIOBJ saveFont; HDC tileDC; short ntile; int t_x, t_y; int x, y; TCHAR wbuf[BUFSZ]; RECT drawRect; COLORREF OldBg, OldFg, NewBg; char *p, *p1; int column; lpdis = (LPDRAWITEMSTRUCT) lParam; /* If there are no list box items, skip this message. */ if (lpdis->itemID == -1) return FALSE; data = (PNHMenuWindow)GetWindowLong(hWnd, GWL_USERDATA); item = &data->menu.items[lpdis->itemID]; tileDC = CreateCompatibleDC(lpdis->hDC); saveFont = SelectObject(lpdis->hDC, mswin_get_font(NHW_MENU, item->attr, lpdis->hDC, FALSE)); NewBg = mswin_get_color(NHW_MENU, MSWIN_COLOR_BG); OldBg = SetBkColor(lpdis->hDC, NewBg); OldFg = SetTextColor(lpdis->hDC, mswin_get_color(NHW_MENU, MSWIN_COLOR_FG)); GetTextMetrics(lpdis->hDC, &tm); x = lpdis->rcItem.left + 1; /* print check mark if it is a "selectable" menu */ if( data->how!=PICK_NONE ) { if( NHMENU_IS_SELECTABLE(*item) ) { HGDIOBJ saveBrush; HBRUSH hbrCheckMark; char buf[2]; switch(item->count) { case -1: hbrCheckMark = CreatePatternBrush(data->bmpChecked); break; case 0: hbrCheckMark = CreatePatternBrush(data->bmpNotChecked); break; default: hbrCheckMark = CreatePatternBrush(data->bmpCheckedCount); break; } y = (lpdis->rcItem.bottom + lpdis->rcItem.top - TILE_Y) / 2; SetBrushOrgEx(lpdis->hDC, x, y, NULL); saveBrush = SelectObject(lpdis->hDC, hbrCheckMark); PatBlt(lpdis->hDC, x, y, TILE_X, TILE_Y, PATCOPY); SelectObject(lpdis->hDC, saveBrush); DeleteObject(hbrCheckMark); x += TILE_X + 5; if(item->accelerator!=0) { buf[0] = item->accelerator; buf[1] = '/x0'; SetRect( &drawRect, x, lpdis->rcItem.top, lpdis->rcItem.right, lpdis->rcItem.bottom );/*JP DrawText(lpdis->hDC, NH_A2W(buf, wbuf, 2), 1, &drawRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX);*/ DrawText(lpdis->hDC, NH_A2W(buf, wbuf, 2), -1, &drawRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX); } x += tm.tmAveCharWidth + tm.tmOverhang + 5; } else { x += TILE_X + tm.tmAveCharWidth + tm.tmOverhang + 10; } } /* print glyph if present */ if( item->glyph != NO_GLYPH ) { HGDIOBJ saveBmp; saveBmp = SelectObject(tileDC, GetNHApp()->bmpTiles); ntile = glyph2tile[ item->glyph ]; t_x = (ntile % TILES_PER_LINE)*TILE_X; t_y = (ntile / TILES_PER_LINE)*TILE_Y; y = (lpdis->rcItem.bottom + lpdis->rcItem.top - TILE_Y) / 2; nhapply_image_transparent( lpdis->hDC, x, y, TILE_X, TILE_Y, tileDC, t_x, t_y, TILE_X, TILE_Y, TILE_BK_COLOR ); SelectObject(tileDC, saveBmp); } x += TILE_X + 5; /* draw item text */ if( item->has_tab ) { p1 = item->str; p = strchr(item->str, '/t'); column = 0; SetRect( &drawRect, x, lpdis->rcItem.top, min(x + data->menu.tab_stop_size[0], lpdis->rcItem.right), lpdis->rcItem.bottom );//.........这里部分代码省略.........
开发者ID:yzh,项目名称:yzhack,代码行数:101,
示例7: MonSelPaintMonitorstatic VOIDMonSelPaintMonitor(IN OUT PMONITORSELWND infoPtr, IN HDC hDC, IN DWORD Index, IN OUT PRECT prc, IN COLORREF crDefFontColor, IN BOOL bHideNumber){ HFONT hFont, hPrevFont; COLORREF crPrevText; if ((INT)Index == infoPtr->SelectedMonitor) { FillRect(hDC, prc, (HBRUSH)(COLOR_HIGHLIGHT + 1)); if (infoPtr->HasFocus && !(infoPtr->UIState & UISF_HIDEFOCUS)) { /* NOTE: We need to switch the text color to the default, because DrawFocusRect draws a solid line if the text is white! */ crPrevText = SetTextColor(hDC, crDefFontColor); DrawFocusRect(hDC, prc); SetTextColor(hDC, crPrevText); } } InflateRect(prc, -infoPtr->SelectionFrame.cx, -infoPtr->SelectionFrame.cy); Rectangle(hDC, prc->left, prc->top, prc->right, prc->bottom); InflateRect(prc, -1, -1); if (!bHideNumber) { hFont = MonSelGetMonitorFont(infoPtr, hDC, Index); if (hFont != NULL) { hPrevFont = SelectObject(hDC, hFont); DrawText(hDC, infoPtr->Monitors[Index].szCaption, -1, prc, DT_VCENTER | DT_CENTER | DT_NOPREFIX | DT_SINGLELINE); SelectObject(hDC, hPrevFont); } } if (infoPtr->MonitorInfo[Index].Flags & MSL_MIF_DISABLED) { InflateRect(prc, 1, 1); MonSelDrawDisabledRect(infoPtr, hDC, prc); }}
开发者ID:GYGit,项目名称:reactos,代码行数:79,
示例8: A4A4(PRIVATE, void, dobuttons, INTEGER, id, INTEGER, offsetx, INTEGER, offsety, BOOLEAN, demo_button_p){ struct bdef *bp; struct sdef *sp; struct pdef *pp; int i; EventRecord evt; int done; int tcnt, twid; Point p;#define BILLBUTTONS /* */#if defined (BILLBUTTONS) INTEGER h, v;#endif /* BILLBUTTONS */ char *textp; if ((bp = (struct bdef *) findid(id))) { for (i = 0; i < Cx(bp->nbut); i++) { /* Offset buttons; this hack is to center the splash screen * on non-512x342 root windows...yuck! */ C_OffsetRect (&bp->buts[i].butloc, offsetx, offsety); if ((sp = (struct sdef *)findid(CW(bp->buts[i].butstrid)))) { if (demo_button_p && sp->text[0] == 'O' && sp->text[1] == 'K') textp = "Demo"; else textp = sp->text; tcnt = strlen(textp); twid = TextWidth((Ptr) textp, 0, tcnt); MoveTo((CW(bp->buts[i].butloc.left) + CW(bp->buts[i].butloc.right) - twid) / 2, (CW(bp->buts[i].butloc.top) + CW(bp->buts[i].butloc.bottom)) / 2 + 4); DrawText((Ptr) textp, 0, tcnt); }#if defined (BILLBUTTONS) h = CW(bp->buts[i].butloc.right) - CW(bp->buts[i].butloc.left); v = (CW(bp->buts[i].butloc.bottom) - CW(bp->buts[i].butloc.top))/2; if (h > v) h = v; if (!(ROMlib_options & ROMLIB_RECT_SCREEN_BIT)) FrameRoundRect(&bp->buts[i].butloc, h, v); else FrameRect(&bp->buts[i].butloc);#else /* BILLBUTTONS */ if (!(ROMlib_options & ROMLIB_RECT_SCREEN_BIT)) FrameRoundRect(&bp->buts[i].butloc, 10, 10); else FrameRect(&bp->buts[i].butloc);#endif /* BILLBUTTONS */ } for (done = 0; !done;) { C_GetNextEvent(mDownMask|keyDownMask, &evt); if (evt.what == CWC(mouseDown) || evt.what == CWC(keyDown)) { p.h = CW(evt.where.h); p.v = CW(evt.where.v); for (i = 0; !done && i < CW(bp->nbut); i++) { if (PtInRect(p, &bp->buts[i].butloc) || ((evt.what == CWC(keyDown)) && (((CL(evt.message) & charCodeMask) == '/r') || ((CL(evt.message) & charCodeMask) == NUMPAD_ENTER))) ) { if ((pp = (struct pdef *) findid(CW(bp->buts[i].butprocid)))) /* NOTE: we will have to do a better job here sometime */ (*(void (*)(void))MR(pp->proc))(); done = 1; } } if (!done) SysBeep(1); } } if (evt.what == CWC(mouseDown)) while (!C_GetNextEvent(mUpMask, &evt)) ; /* Move all buttons back. */ for (i = 0; i < Cx(bp->nbut); i++) C_OffsetRect (&bp->buts[i].butloc, -offsetx, -offsety); }}
开发者ID:nobled,项目名称:executor,代码行数:87,
示例9: MsgProc//.........这里部分代码省略......... // To play a zero-latency cue: // 1) prepare it // 2) wait for it to be prepared // 3) play it with using the cue instance returned from the Prepare() function. if( wParam == 'A' ) { // The Play() call on a cue will only succeed if the cue is either preparing or // prepared meaning it can not be playing, etc. DWORD dwState; g_audioState.pZeroLatencyRevCue->GetState( &dwState ); if( ( dwState & ( XACT_CUESTATE_PREPARING | XACT_CUESTATE_PREPARED ) ) != 0 ) g_audioState.pZeroLatencyRevCue->Play(); } if( wParam == VK_ESCAPE ) PostQuitMessage( 0 ); break; } case WM_TIMER: { // Update message string every so often WCHAR szState[512]; if( g_audioState.pZeroLatencyRevCue ) { DWORD dwState; g_audioState.pZeroLatencyRevCue->GetState( &dwState ); switch( dwState ) { case XACT_CUESTATE_CREATED: StringCchCopy( szState, 512, L"Created, but nothing else" ); break; case XACT_CUESTATE_PREPARING: StringCchCopy( szState, 512, L"Preparing to play" ); break; case XACT_CUESTATE_PREPARED: StringCchCopy( szState, 512, L"Prepared, but not yet played" ); break; case XACT_CUESTATE_PLAYING: StringCchCopy( szState, 512, L"Playing, but can be paused" ); break; case XACT_CUESTATE_STOPPING: StringCchCopy( szState, 512, L"Stopping" ); break; case XACT_CUESTATE_STOPPED: StringCchCopy( szState, 512, L"Stopped" ); break; case XACT_CUESTATE_PAUSED: StringCchCopy( szState, 512, L"Paused" ); break; } } else { StringCchCopy( szState, 512, L"Not created" ); } EnterCriticalSection( &g_audioState.cs ); WCHAR sz[512]; StringCchPrintf( sz, 512, L"Press space to play an XACT cue called 'zap' which plays/n" L"from an in-memory wave bank/n" L"/n" L"Press 'A' to play a zero-latency cue when it is preparing or prepared./n" L"When this cue stops, the tutorial releases it and prepares a new cue/n" L"Cue state: %s/n" L"/n" L"This tutorial is also playing background music in that is/n" L"contained in a streaming wave bank. When the background/n" L"music stops, a new song cue is played by the tutorial./n" L"Currently playing: Song %d/n", szState, g_audioState.nCurSongPlaying + 1 ); LeaveCriticalSection( &g_audioState.cs ); if( wcscmp( sz, s_szMessage ) != 0 ) { // Repaint the window if needed StringCchCopy( s_szMessage, 1024, sz ); InvalidateRect( g_hWnd, NULL, TRUE ); UpdateWindow( g_hWnd ); } break; } case WM_PAINT: { // Paint some simple explanation text PAINTSTRUCT ps; HDC hDC = BeginPaint( hWnd, &ps ); SetBkColor( hDC, 0xFF0000 ); SetTextColor( hDC, 0xFFFFFF ); RECT rect; GetClientRect( hWnd, &rect ); rect.top = 70; DrawText( hDC, s_szMessage, -1, &rect, DT_CENTER ); EndPaint( hWnd, &ps ); return 0; } case WM_DESTROY: { PostQuitMessage( 0 ); break; } } return DefWindowProc( hWnd, msg, wParam, lParam );}
开发者ID:KNeal,项目名称:Oculus,代码行数:101,
示例10: DisplayNumericStat/* * DisplayNumericStat: Display the given numeric type stat from the current group on the * main window. */void DisplayNumericStat(Statistic *s){ RECT r; HDC hdc; HFONT hOldFont; char *name, *str; AREA stats_area; AREA a; // ajw - Avoid drawing if Inventory is selected as the "group". if( StatsGetCurrentGroup() == STATS_INVENTORY ) return; StatsGetArea(&stats_area); r.left = 0; r.right = stats_area.cx / 2; r.top = s->y; r.bottom = r.top + s->cy; /* If stat is out of stats area, abort */ if (r.bottom > stats_area.cy || s->num <= top_stat) return; hdc = GetDC(hStats);// DrawWindowBackground(hdc, &r, stats_area.x + r.left, stats_area.y + r.top); DrawWindowBackgroundColor( pinventory_bkgnd(), hdc, &r, stats_area.x + r.left, stats_area.y + r.top, -1 ); hOldFont = (HFONT) SelectObject(hdc, GetFont(FONT_STATS)); SetBkMode(hdc, TRANSPARENT); name = LookupNameRsc(s->name_res); // Draw with drop shadow SetTextColor(hdc, GetColor(COLOR_STATSBGD)); DrawText(hdc, name, strlen(name), &r, DT_LEFT); OffsetRect(&r, 1, 1); SetTextColor(hdc, GetColor(COLOR_STATSFGD)); DrawText(hdc, name, strlen(name), &r, DT_LEFT); switch (s->numeric.tag) { case STAT_RES: r.left = stats_area.cx / 2; r.right = stats_area.cx; DrawWindowBackgroundColor( pinventory_bkgnd(), hdc, &r, stats_area.x + r.left, stats_area.y + r.top, -1 ); str = LookupNameRsc(s->numeric.value); DrawText(hdc, str, strlen(str), &r, DT_RIGHT); break; case STAT_INT: // Draw background around stat bar a.x = stats_area.cx / 2; a.cx = stats_bar_width; a.y = s->y + (s->cy - STATS_BAR_HEIGHT) / 2; a.cy = STATS_BAR_HEIGHT; InterfaceDrawBarBorder( pinventory_bkgnd(), hdc, &a ); break; } SelectObject(hdc, hOldFont); ReleaseDC(hStats, hdc); InvalidateRect( s->hControl, NULL, FALSE );}
开发者ID:Tatsujinichi,项目名称:Meridian59,代码行数:71,
示例11: WinProc//.........这里部分代码省略......... break; case SB_LINEDOWN: // The down arrow of the scroll bar has been clicked // If the scrollAmt is already at the maximum Y position then we can't move // down anymore so simply return if(scrollAmt == scrollInfo.nMax) return 0; else scrollAmt = scrollAmt + 1; // Otherwise we want to scroll down by one unit break; // The user has dragged the thumb (that's the box inbetween the left and right arrows on // the scroll bar) by clicking it, dragging it, and then releasing the mouse button case SB_THUMBPOSITION: // We need to know the new position of the scroll bar. It is given to us // by the HIWORD of the WPARAM scrollAmt = HIWORD(wparam); break; default: // **NOTE** There are other messages that could be sent but we're not // going to do anything if we receive 'em. As always, for the // full unedited scoop, check out MSDN. break; } // end of switch(LOWORD(wparam)) // Alright if we get here, we know that we've updated our scroll bar's position // so we need to fill the SCROLLINFO with that information and then tell the // window about it scrollInfo.nPos = scrollAmt; // Set the new position scrollInfo.fMask = SIF_POS; // Set the flag saying "We're use the nPos value in SCROLLINFO" // Set the new position. // **NOTE** We pass true because we want the scroll bar redrawn to update it's // thumb position SetScrollInfo(hwnd, SB_VERT, &scrollInfo, true); // Lastly, we need to redraw the window to display the correct portion of the // text. What InvalidateRect does for us is specify a "dirty" region of // the window that needs to be repainted. When the window doesn't have any other messages // in it's message queue, it will generate a WM_PAINT message, and repaint all the // areas in it's dirty region. // By parameter: // hwnd -- Handle to the window who is to be repainted // NULL -- Rectangle area of the window to repaint. By passing NULL we are requesting // that the entire client area of the window be repainted // TRUE -- This is a boolean value that says whether the background should be redrawn // or not. For us, our background is solid white, and we want it redrawn so // the text doesn't draw over itself. Typically, this value will be set // to true. InvalidateRect(hwnd,NULL,TRUE); return 0; // This message is sent when the window needs to be repainted case WM_PAINT: // Begin painting to the window and get the HDC associated // with the window hdc = BeginPaint(hwnd, &ps); // The paint struct contains the area of the window for redrawing. We // want to subtract off the amount we've scrolled down, so that we show the // correct portion of text based on where we have vertically scrolled. ps.rcPaint.top -= scrollAmt; if(gText) { // DrawText(), as the name implies, this function draws text to the screen // By parameter: // hdc -- The handle to the device context to draw to // gText -- Pointer to the string for drawing // strlen(gText) -- Length of the string to draw // &(ps.rcPaint) -- Pointer to the bounding rectangle of where to draw the text // DT_WORDBREAK -- This parameter is for optional flags to DrawText(). This // specific flag says that if the text extends past the right // side of it's bounding rectangle, do a word wrap and continue // the text on the next line. DrawText(hdc, gText, strlen(gText), &(ps.rcPaint), DT_WORDBREAK); } // We've finished painting to the window EndPaint(hwnd, &ps); return 0; // When the program is destroyed case WM_DESTROY: PostQuitMessage(0); return 0; } // end of switch(message) return DefWindowProc(hwnd, message, wparam, lparam);}
开发者ID:jiangguang5201314,项目名称:ZNginx,代码行数:101,
示例12: WndProc//.........这里部分代码省略......... DeleteObject(hFont); PostQuitMessage(0); return 0; } case WM_ERASEBKGND: { // Don't do any erasing here. It's done in WM_PAINT to avoid flicker. return 1; } case WM_VOLUMECHANGE: { // get the new volume level g_pVolumeMonitor->GetLevelInfo(&g_currentVolume); // make window visible for 2 seconds ShowWindow(hWnd, SW_SHOW); InvalidateRect(hWnd, NULL, TRUE); nTimerId = SetTimer(hWnd, 101, 2000, NULL); return 0; } case WM_ENDPOINTCHANGE: { g_pVolumeMonitor->ChangeEndpoint(); return 0; } case WM_TIMER: { // make the window go away ShowWindow(hWnd, SW_HIDE); KillTimer(hWnd, nTimerId); return 0; } case WM_PAINT: { PAINTSTRUCT ps; HPAINTBUFFER hBufferedPaint = NULL; RECT rc; GetClientRect(hWnd, &rc); HDC hdc = BeginPaint(hWnd, &ps); if (g_bDblBuffered) { // Get doublebuffered DC HDC hdcMem; hBufferedPaint = BeginBufferedPaint(hdc, &rc, BPBF_COMPOSITED, NULL, &hdcMem); if (hBufferedPaint) { hdc = hdcMem; } } // black background (transparency color) FillRect(hdc, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH)); // Draw LEDs for (UINT i = 0; i < (g_currentVolume.cSteps-1); i++) { RECT const rcLed = { DPIScale(i * 10), DPIScale(10), DPIScale(i * 10 + 8), rc.bottom-DPIScale(15) }; if ((i < g_currentVolume.nStep) && (!g_currentVolume.bMuted)) FillRect(hdc, &rcLed, hbrLit); else FillRect(hdc, &rcLed, hbrUnlit); } if (g_currentVolume.bMuted) { HGDIOBJ hof = SelectObject(hdc, hFont); SetBkMode(hdc, TRANSPARENT); SetTextColor(hdc, RGB(255, 64, 64)); RECT rcText = rc; rcText.bottom -= DPIScale(11); DrawText(hdc, L"MUTED", -1, &rcText, DT_CENTER | DT_SINGLELINE | DT_VCENTER); SelectObject(hdc, hof); } if (hBufferedPaint) { // end painting BufferedPaintMakeOpaque(hBufferedPaint, NULL); EndBufferedPaint(hBufferedPaint, TRUE); } EndPaint(hWnd, &ps); return 0; } } return DefWindowProc(hWnd, message, wParam, lParam);}
开发者ID:Essjay1,项目名称:Windows-classic-samples,代码行数:101,
示例13: Draw/*----------------------------------------------------------------------------- * Draw * The Draw function is the main loop for the Graphics process. Draws each * viewport and the lines within them *-----------------------------------------------------------------------------*/void Draw( void ){ char buf[BUF_SIZ]; GLdouble answer[MATRIX_SIZE]; GLdouble attempt[MATRIX_SIZE]; /* Clear the screen ... */ glClear( GL_COLOR_BUFFER_BIT ); if(gameComplete) { DrawText(-25.0, -25.0, DEFAULT_FONT, "GAME OVER! YOU WIN!"); } else if(levelComplete) { DrawText(-25.0, -25.0, DEFAULT_FONT, "LEVEL COMPLETE!"); } else { glPushMatrix( ); /* Draw the Outlines for Transforms */ glCallList('a'); glCallList('s'); /* Draw the Axes */ glBegin( GL_LINES ); glColor3f( 0.5, 0.5, 0.5 ); glVertex3f( 100.0, 0.0, 0.0 ); glVertex3f(-100.0, 0.0, 0.0 ); glVertex3f( 0.0, 100.0, 0.0 ); glVertex3f( 0.0,-100.0, 0.0 ); glColor3f( 1.0, 1.0, 1.0 ); glEnd( ); glPopMatrix( ); /* Draw the first set of Available Transforms */ glPushMatrix( ); /* Move to origin of first list */ glTranslatef( 115.0, 90.0, 0.0 ); /* List drawing */ CreateTransforms( &tlAvailableTransforms, VERTICAL, AVAILABLE ); glPopMatrix( ); /* Draw the second set of Used Transforms */ glPushMatrix( ); /* Move to origin of first list */ glTranslatef( -85.0, -120.0, 0.0 ); /* List drawing */ CreateTransforms( &tlSelectedTransforms, HORIZONTAL, SELECTED ); glPopMatrix( ); glPushMatrix( ); /* Do all level transforms */ RunTransformList( &tlLevel ); /* Create model house */ glLoadName( 1 ); glCallList( 'l' ); /* Get the modelview matrix */ glGetDoublev( GL_MODELVIEW_MATRIX, answer ); glPopMatrix( ); /* Create the new house */ glPushMatrix( ); /* Do all user selected transforms */ RunTransformList( &tlSelectedTransforms ); /* Create attempt house */ glLoadName( HOUSE ); glCallList( 'h' ); /* Get the modelview matrix */ glGetDoublev( GL_MODELVIEW_MATRIX, attempt ); glPopMatrix( ); /* Compare the model */ if(CompareMatrices(answer, attempt)) { levelComplete = TRUE; glutPostRedisplay( ); } } /* Flush the buffer */ glutSwapBuffers(); return;}
开发者ID:Aretnorp,项目名称:cs-2010f,代码行数:96,
示例14: mswin_menu_window_sizevoid mswin_menu_window_size (HWND hWnd, LPSIZE sz){ TEXTMETRIC tm; HWND control; HGDIOBJ saveFont; HDC hdc; PNHMenuWindow data; int i; RECT rt, wrt; int extra_cx; GetClientRect(hWnd, &rt); sz->cx = rt.right - rt.left; sz->cy = rt.bottom - rt.top; GetWindowRect(hWnd, &wrt); extra_cx = (wrt.right-wrt.left) - sz->cx; data = (PNHMenuWindow)GetWindowLong(hWnd, GWL_USERDATA); if(data) { control = GetMenuControl(hWnd); hdc = GetDC(control); if( data->type==MENU_TYPE_MENU ) { /* Calculate the width of the list box. */ saveFont = SelectObject(hdc, mswin_get_font(NHW_MENU, ATR_NONE, hdc, FALSE)); GetTextMetrics(hdc, &tm); for(i=0; i<data->menu.size; i++ ) { LONG menuitemwidth = 0; int column; char *p, *p1; p1 = data->menu.items[i].str; p = strchr(data->menu.items[i].str, '/t'); column = 0; for (;;) { TCHAR wbuf[BUFSZ]; RECT tabRect; SetRect ( &tabRect, 0, 0, 1, 1 ); if (p != NULL) *p = '/0'; /* for time being, view tab field as zstring */ DrawText(hdc, NH_A2W(p1, wbuf, BUFSZ),/*JP strlen(p1),*/ -1, &tabRect, DT_CALCRECT | DT_LEFT | DT_VCENTER | DT_SINGLELINE ); /* it probably isn't necessary to recompute the tab width now, but do so * just in case, honoring the previously computed value */ menuitemwidth += max(data->menu.tab_stop_size[column], tabRect.right - tabRect.left); if (p != NULL) *p = '/t'; else /* last string so, */ break; /* add the separation only when not the last item */ /* in the last item, we break out of the loop, in the statement just above */ menuitemwidth += TAB_SEPARATION; ++column; p1 = p + 1; p = strchr(p1, '/t'); } sz->cx = max(sz->cx, (LONG)(2*TILE_X + menuitemwidth + tm.tmAveCharWidth*12 + tm.tmOverhang)); } SelectObject(hdc, saveFont); } else { /* do not change size for text output - the text will be formatted to fit any window */ } sz->cx += extra_cx; ReleaseDC(control, hdc); }}
开发者ID:yzh,项目名称:yzhack,代码行数:77,
示例15: onMSNHCommandvoid onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam){ PNHMenuWindow data; data = (PNHMenuWindow)GetWindowLong(hWnd, GWL_USERDATA); switch( wParam ) { case MSNH_MSG_PUTSTR: { PMSNHMsgPutstr msg_data = (PMSNHMsgPutstr)lParam; HWND text_view; if( data->type!=MENU_TYPE_TEXT ) SetMenuType(hWnd, MENU_TYPE_TEXT); if( !data->text.text ) { data->text.text = mswin_init_text_buffer( program_state.gameover? FALSE : GetNHApp()->bWrapText ); if( !data->text.text ) break; } mswin_add_text(data->text.text, msg_data->attr, msg_data->text); text_view = GetDlgItem(hWnd, IDC_MENU_TEXT); if( !text_view ) panic("cannot get text view window"); mswin_render_text(data->text.text, text_view); } break; case MSNH_MSG_STARTMENU: { int i; if( data->type!=MENU_TYPE_MENU ) SetMenuType(hWnd, MENU_TYPE_MENU); if( data->menu.items ) free(data->menu.items); data->how = PICK_NONE; data->menu.items = NULL; data->menu.size = 0; data->menu.allocated = 0; data->done = 0; data->result = 0; for (i = 0; i < NUMTABS; ++i) data->menu.tab_stop_size[i] = MIN_TABSTOP_SIZE; } break; case MSNH_MSG_ADDMENU: { PMSNHMsgAddMenu msg_data = (PMSNHMsgAddMenu)lParam; char *p, *p1; int new_item; HDC hDC; int column; HFONT saveFont; if( data->type!=MENU_TYPE_MENU ) break; if( strlen(msg_data->str)==0 ) break; if( data->menu.size==data->menu.allocated ) { data->menu.allocated += 10; data->menu.items = (PNHMenuItem)realloc(data->menu.items, data->menu.allocated*sizeof(NHMenuItem)); } new_item = data->menu.size; ZeroMemory( &data->menu.items[new_item], sizeof(data->menu.items[new_item])); data->menu.items[new_item].glyph = msg_data->glyph; data->menu.items[new_item].identifier = *msg_data->identifier; data->menu.items[new_item].accelerator = msg_data->accelerator; data->menu.items[new_item].group_accel = msg_data->group_accel; data->menu.items[new_item].attr = msg_data->attr; parse_menu_str(data->menu.items[new_item].str, msg_data->str, NHMENU_STR_SIZE); data->menu.items[new_item].presel = msg_data->presel; /* calculate tabstop size */ p = strchr(data->menu.items[new_item].str, '/t'); if( p ) { data->menu.items[new_item].has_tab = TRUE; hDC = GetDC(hWnd); saveFont = SelectObject(hDC, mswin_get_font(NHW_MENU, msg_data->attr, hDC, FALSE)); p1 = data->menu.items[new_item].str; column = 0; for (;;) { TCHAR wbuf[BUFSZ]; RECT drawRect; SetRect ( &drawRect, 0, 0, 1, 1 ); if (p != NULL) *p = '/0'; /* for time being, view tab field as zstring */ DrawText(hDC, NH_A2W(p1, wbuf, BUFSZ),/*JP strlen(p1),*/ -1, &drawRect, DT_CALCRECT | DT_LEFT | DT_VCENTER | DT_EXPANDTABS | DT_SINGLELINE ); data->menu.tab_stop_size[column] = max( data->menu.tab_stop_size[column], drawRect.right - drawRect.left ); if (p != NULL) *p = '/t'; else /* last string so, */ break;//.........这里部分代码省略.........
开发者ID:yzh,项目名称:yzhack,代码行数:101,
示例16: matrix//.........这里部分代码省略......... style.Add(element->GetAnimStyle()); DrawCircle(element, &matrix, &style); break; } case wxSVG_ELLIPSE_ELEMENT: { wxSVGEllipseElement* element = (wxSVGEllipseElement*) elem; if (element->GetVisibility() == wxCSS_VALUE_HIDDEN) break; element->UpdateMatrix(matrix); style.Add(element->GetStyle()); style.Add(element->GetAnimStyle()); DrawEllipse(element, &matrix, &style); break; } case wxSVG_PATH_ELEMENT: { wxSVGPathElement* element = (wxSVGPathElement*) elem; if (element->GetVisibility() == wxCSS_VALUE_HIDDEN) break; element->UpdateMatrix(matrix); style.Add(element->GetStyle()); style.Add(element->GetAnimStyle()); DrawPath(element, &matrix, &style); break; } case wxSVG_TSPAN_ELEMENT: break; case wxSVG_TEXT_ELEMENT: { wxSVGTextElement* element = (wxSVGTextElement*) elem; if (element->GetVisibility() == wxCSS_VALUE_HIDDEN) break; element->UpdateMatrix(matrix); style.Add(element->GetStyle()); style.Add(element->GetAnimStyle()); DrawText(element, &matrix, &style); break; } case wxSVG_IMAGE_ELEMENT: { wxSVGImageElement* element = (wxSVGImageElement*) elem; if (element->GetVisibility() == wxCSS_VALUE_HIDDEN || element->GetOpacity() == 0) break; element->UpdateMatrix(matrix); style.Add(element->GetStyle()); style.Add(element->GetAnimStyle()); DrawImage(element, &matrix, &style, rect, progressDlg); break; } case wxSVG_VIDEO_ELEMENT: { wxSVGVideoElement* element = (wxSVGVideoElement*) elem; if (element->GetVisibility() == wxCSS_VALUE_HIDDEN || element->GetOpacity() == 0) break; element->UpdateMatrix(matrix); style.Add(element->GetStyle()); style.Add(element->GetAnimStyle());#ifdef USE_LIBAV DrawVideo(element, &matrix, &style);#else wxSVGGElement* gElem = new wxSVGGElement(); gElem->SetOwnerSVGElement(ownerSVGElement); gElem->SetViewportElement(viewportElement); gElem->SetStyle(element->GetStyle()); wxSVGRectElement* rectElem = new wxSVGRectElement(); rectElem->SetX(element->GetX().GetAnimVal()); rectElem->SetY(element->GetY().GetAnimVal()); rectElem->SetWidth(element->GetWidth().GetAnimVal()); rectElem->SetHeight(element->GetHeight().GetAnimVal()); rectElem->SetFill(wxSVGPaint(0,0,0));
开发者ID:krvajalmiguelangel,项目名称:svgeye,代码行数:67,
示例17: WndProc//// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)//// PURPOSE: Processes messages for the main window.//// WM_COMMAND - process the application menu// WM_PAINT - Paint the main window// WM_DESTROY - post a quit message and return////LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ HDC hdc; int wmId, wmEvent; PAINTSTRUCT ps; TCHAR szHello[MAX_LOADSTRING]; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_SAVE: { TCHAR szPathName[_MAX_PATH]; OPENFILENAME ofn; int cbSize = sizeof(OPENFILENAME); szPathName[0] = 0; memset(&ofn, 0, cbSize); ofn.lStructSize = cbSize; ofn.hwndOwner = hWnd; ofn.lpstrFilter = TEXT("Text files/0*.txt/0All files/0*.*/0"); ofn.lpstrCustomFilter = NULL; ofn.nFilterIndex = 1; ofn.lpstrFile = szPathName; ofn.nMaxFile = sizeof(szPathName) / sizeof(TCHAR); ofn.Flags = OFN_OVERWRITEPROMPT | OFN_SHOWHELP; ofn.lpstrDefExt = TEXT("txt"); GetSaveFileName(&ofn); MessageBox(hWnd, szPathName, _T("File Name Selected"), MB_OK); } break; case IDM_HELP_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break; case IDOK: SendMessage(hWnd, WM_ACTIVATE, MAKEWPARAM(WA_INACTIVE, 0), (LPARAM)hWnd); SendMessage (hWnd, WM_CLOSE, 0, 0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_CREATE: s_sai.cbSize = sizeof(SHACTIVATEINFO); hwndCB = CreateRpCommandBar(hWnd); break; case WM_PAINT: RECT rt; hdc = BeginPaint(hWnd, &ps); GetClientRect(hWnd, &rt); LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); DrawText(hdc, szHello, _tcslen(szHello), &rt, DT_SINGLELINE | DT_VCENTER | DT_CENTER); EndPaint(hWnd, &ps); break; case WM_DESTROY: CommandBar_Destroy(hwndCB); PostQuitMessage(0); break; case WM_SETTINGCHANGE: SHHandleWMSettingChange(hWnd, wParam, lParam, &s_sai); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0;}
开发者ID:venkatarajasekhar,项目名称:repo,代码行数:86,
示例18: ChPaint//.........这里部分代码省略......... if(!leftImg.IsEmpty()) { Size isz = leftImg.GetSize(); w.DrawImage(tx, y + (cy - isz.cy) / 2, leftImg); tx += isz.cx + 3; } if(!rightImg.IsEmpty()) { Size isz = rightImg.GetSize(); w.DrawImage(x + cx - isz.cx - 3, y + (cy - isz.cy) / 2, rightImg); } if(!centerImg.IsEmpty()) { Size isz = centerImg.GetSize(); w.DrawImage(x + (cx - isz.cx) / 2, y + (cy - isz.cy) / 2, centerImg); } } if(moved) DrawBorder(w, x, y, cx, cy, BlackBorder); Color col = style & GD::READONLY ? Gray : Black; if(sortmode > 0) { Size isz = GridImg::SortAsc().GetSize(); int yf = y + (cy - isz.cy) / 2; int xf = tx + 2; tx = xf + isz.cx + 1; if(sortcol > 0 && sortcnt > 1) { String tcol = AsString(sortcol); Size tsz = GetTextSize(tcol, fnt); w.DrawText(tx, y + (cy - tsz.cy) / 2, tcol, fnt); tx += tsz.cx; } bool asc = sortmode == 1; if(reverse_sort_icon) asc = !asc; w.DrawImage(xf, yf, asc ? GridImg::SortAsc() : GridImg::SortDsc(), col); tx += 3; } if(indicator) { w.Clip(x, y, cx, cy); Image img; if((style & GD::CURSOR) && (style & GD::SELECT)) { img = GridImg::FocSel(); } else if(style & GD::CURSOR) { img = GridImg::Focused(); } else if(style & GD::SELECT) { img = GridImg::Selected(); } if(!img.IsEmpty()) { Size isz = img.GetSize(); int xp = IsNull(val) ? x + (cx - isz.cx) / 2 : tx; w.DrawImage(xp, y + (cy - isz.cy) / 2, img, col); if(!IsNull(val)) tx += isz.cx + 3; } w.End(); } if(cx > lm + rm && cy > tm + bm) { int nx = x + lm; int ny = y + tm; int ncx = cx - lm - rm; int ncy = cy - tm - bm; w.Clip(nx, ny, ncx, ncy); int al = style & GD::ALIGN ? style & GD::ALIGN : align; Color fg = style & GD::READONLY ? SColorDisabled() : SColorText(); DrawText(w, tx, nx, ny, ncx, ncy, al, GetStdConvertedValue(val), fnt, fg, SColorPaper, 0, 0, 0, style & GD::WRAP); w.End(); }}
开发者ID:ultimatepp,项目名称:mirror,代码行数:101,
示例19: DrawMenuvoid DrawMenu(){ ClearScreen(); switch(mode) { case 1: { //Step Programming menu //Status SetTextColor(green); DrawText(6, 5, "BigTrakr! Steps: %d", steps); //Menu options SetTextColor(white); DrawText(15, 22, "Forward"); DrawText(15, 37, "Back"); DrawText(15, 52, "Right"); DrawText(15, 67, "Left"); DrawText(15, 82, "Fire"); //Menu pointer DrawImage(markerImage,5,10+15*menuItem,white); //Number (lengths, degrees, lasers) SetTextColor(white); if(menuItem<3 || menuItem==5) { DrawText(90, 7 + 15*menuItem,"%d",menuNum); } else if (menuItem < 5) { DrawText(90, 7 + 15*menuItem,"%d",menuNum * 15); } //Number arrows prompting right stick adjustments SetTextColor(red); //DrawText(90, 13 + 15*(menuItem-1),"^"); //DrawText(90, 2 + 15*(menuItem+1),"v"); DrawImage(upImage, 92, 17+15*(menuItem-1), white); DrawImage(downImage, 92, 8 + 15*(menuItem+1), white); //Button identifiers SetTextColor(blue); DrawText(6, 100, "Clear"); DrawText(100,100, "Select"); } break; case 2: { //Additional menu //Status SetTextColor(green); DrawText(5, 5, "BigTrakr! Steps: %d", steps); //Menu options SetTextColor(white); DrawText(15, 22, "Free Roam"); DrawText(15, 37, "Load Route"); DrawText(15, 52, "Save Route"); DrawText(15, 67, "Recalibrate"); DrawText(15, 82, "About"); //Menu pointer DrawImage(markerImage,5,10+15*menuItem,white); //Button identifiers SetTextColor(blue); DrawText(6, 100, "Back"); DrawText(100,100, "Select"); } break; case 3: { //Recalibration mode switch(menuNum) { case 1: { //Ready SetTextColor(white); DrawText(6, 7, "To recalibrate"); DrawText(6, 22, "rotation, press"); DrawText(6, 37, "Button B to start"); DrawText(6, 52, "then press again"); DrawText(6, 67, "to stop when the"); DrawText(6, 82, "Trakr spins fully"); SetTextColor(blue); DrawText(6, 100, "Cancel"); DrawText(100,100, "Start"); } break; case 2: { SetTextColor(white); DrawText(6, 22, "Started..."); DrawText(6, 37, "Let the Trakr"); DrawText(6, 52, "spin 360 degrees"); DrawText(6, 67, "then press again"); SetTextColor(blue); DrawText(6, 100, "Cancel"); DrawText(100,100, "Stop"); } break; } } break; case 4: { //Free roam SetTextColor(white); DrawText(5, 5, "Free Roam"); SetTextColor(blue); if (IRState) DrawText(6, 100, "Light off"); else DrawText(6, 100, "Light on"); DrawText(100,100, "Close"); } break; case 5: { //About Splash(); SetTextColor(blue); if (IRState)//.........这里部分代码省略.........
开发者ID:RorschachUK,项目名称:Trakr,代码行数:101,
示例20: Grayscalevoid GridDisplay::Paint(Draw &w, int x, int y, int cx, int cy, const Value &val, dword style, Color &fg, Color &bg, Font &fnt, bool found, int fs, int fe){ real_size.cx = 0; real_size.cy = 0; if(cx == 0 || cy == 0) return; Color mg = bg; int al = style & GD::ALIGN ? style & GD::ALIGN : align; if(cx > lm + rm && cy > tm + bm) { int nx = x + lm; int ny = y + tm; int ncx = cx - lm - rm; int ncy = cy - tm - bm; if(IsNull(bgImg)) { if(lm > 0) w.DrawRect(x, y, lm, cy, mg); if(rm > 0) w.DrawRect(x + cx - rm, y, rm, cy, mg); if(tm > 0) w.DrawRect(x, y, cx, tm, mg); if(bm > 0) w.DrawRect(x, y + cy - bm, cx, bm, mg); w.DrawRect(nx, ny, ncx, ncy, bg); } else w.DrawImage(x, y, cx, cy, bgImg); w.Clip(nx, ny, ncx, ncy); if(!leftImg.IsEmpty()) { Size isz = leftImg.GetSize(); w.DrawImage(nx, ny + (cy - isz.cy) / 2, style & GD::READONLY ? Grayscale(leftImg) : leftImg); nx += isz.cx + 3; ncx -= isz.cx + 3; } if(!rightImg.IsEmpty()) { Size isz = rightImg.GetSize(); w.DrawImage(nx + ncx - isz.cx, y + (cy - isz.cy) / 2, style & GD::READONLY ? Grayscale(rightImg) : rightImg); } if(!centerImg.IsEmpty()) { Size isz = centerImg.GetSize(); w.DrawImage(x + (cx - isz.cx) / 2, y + (cy - isz.cy) / 2, style & GD::READONLY ? Grayscale(centerImg) : centerImg); } if(!(style & GD::NOTEXT)) { DrawText(w, nx, nx, ny, ncx, ncy, al, GetStdConvertedValue(val), fnt, fg, bg, found, fs, fe, style & GD::WRAP); } w.End(); } else w.DrawRect(x, y, cx, cy, bg);}
开发者ID:ultimatepp,项目名称:mirror,代码行数:61,
示例21: notification_daemon_main/* helper functions */DWORD notification_daemon_main(LPVOID lpdwThreadParam){ HINSTANCE hDLLInstance = (HINSTANCE) GetModuleHandle(NULL); WNDCLASSEX wcex = {sizeof(WNDCLASSEX)}; TCHAR szTitle[] = TEXT("libnotify_notification"); TCHAR szWindowClass[] = TEXT("libnotify"); HDC hdc = NULL; HFONT hOldFont = NULL; RECT rc = {0}; MSG msg = {0}; /* register window class */ wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DROPSHADOW; wcex.lpfnWndProc = thread_proc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hDLLInstance; wcex.hIcon = NULL; wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = NULL; if(0 == RegisterClassEx(&wcex)) goto cleanup_and_exit; /* create the notification window */ notification_window = CreateWindowEx(WS_EX_TOOLWINDOW | WS_EX_LAYERED | WS_EX_TRANSPARENT, szWindowClass, szTitle, WS_OVERLAPPED | WS_POPUP, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hDLLInstance, NULL); if(!notification_window) goto cleanup_and_exit; /* screen width / 3.5 is the maximum allowed notification width */ notification_window_width_max = (GetSystemMetrics(SM_CXSCREEN) * 2) / 7; icon_size = (uint16_t) GetSystemMetrics(SM_CXICON); icon_padding = icon_size / 3; /* icon spacing is a third of the icon width */ /* height and width set here are dummy, they will later be reset based on DrawText */ notification_window_width = notification_window_width_max; notification_window_height = notification_window_width / 4; SetWindowPos(notification_window, HWND_TOPMOST, 0, 0, notification_window_width, notification_window_height, SWP_HIDEWINDOW | SWP_NOACTIVATE | SWP_NOREPOSITION); SetLayeredWindowAttributes(notification_window, 0, notification_window_alpha, LWA_ALPHA); font_summary = CreateFont(0, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_ROMAN, NULL); if(!font_summary) goto cleanup_and_exit; font_body = CreateFont(0, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_ROMAN, NULL); if(!font_body) goto cleanup_and_exit; hdc = GetDC(notification_window); if(hdc) { hOldFont = (HFONT) SelectObject(hdc, (HFONT) font_summary); if(hOldFont) { /* set the width and get the height for a single line (summary) from DrawText; for rational on width calc., see the above geometry */ rc.right = notification_window_width - (icon_size + (icon_padding * 3)); DrawText(hdc, TEXT("placeholder"), -1, &rc, DT_CALCRECT | DT_SINGLELINE | DT_VCENTER | DT_END_ELLIPSIS | DT_NOPREFIX); summary_body_divider = (uint16_t) rc.bottom; SelectObject(hdc, (HFONT) hOldFont); } ReleaseDC(notification_window, hdc); if(!hOldFont) goto cleanup_and_exit; } else goto cleanup_and_exit; SetEvent((HANDLE) lpdwThreadParam); while(GetMessage(&msg, NULL, 0, 0)) { if((msg.message == WM_LIBNOTIFYEXIT) || (msg.message == WM_QUIT)) { if(hook_mouse_over) { UnhookWindowsHookEx(hook_mouse_over); hook_mouse_over = NULL; } KillTimer(notification_window, TIMER_ANIMATION); KillTimer(notification_window, TIMER_NOTIFICATION); if(font_summary) DeleteObject(font_summary); if(font_body) DeleteObject(font_body); break; } else { TranslateMessage(&msg);//.........这里部分代码省略.........
开发者ID:esotericnomen,项目名称:artha,代码行数:101,
示例22: WIN_ShowMessageBoxintWIN_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid){ WIN_DialogData *dialog; int i, x, y; UINT_PTR which; const SDL_MessageBoxButtonData *buttons = messageboxdata->buttons; HFONT DialogFont; SIZE Size; RECT TextSize; wchar_t* wmessage; TEXTMETRIC TM; const int ButtonWidth = 88; const int ButtonHeight = 26; const int TextMargin = 16; const int ButtonMargin = 12; /* Jan 25th, 2013 - [email C++ DrawTextW函数代码示例 C++ DrawString函数代码示例
|