zoukankan      html  css  js  c++  java
  • 巨大的数字

    介绍 我在一个简单的对话框应用程序中尝试了变量类型:昌盛int64,并决定让它变得有用 所以我让它显示4 x 1 GB内存芯片的地址范围。 背景 在一个简单的对话框应用程序中的框架不能很好地显示字符串,字符的间距也不好。 因此,我尝试改变字体为一个真正的类型字体。经过几次失败的尝试,我终于想出了办法 另一个不同的解决方案是,我将从静态窗口获取字符串并将其重新格式化为Courier New 然后重写这个字符串。获取对话框窗口,而不是静态窗口。 好吧,我们用它。下面的代码显示了结果。 使用的代码 框架在绘制之前调用OnEraseBkgnd(),所以我将在这里完成。 隐藏,收缩,复制Code

    //
    // Change the Font
    BOOL CBigNumberDlg::OnEraseBkgnd(CDC* pDC)
    {
    	CString szStr;
    	CWnd *pWnd;
    	CSize m_sizeCharScn;
    	CRect rct;
    	GetClientRect(&rct);
    	pDC->FillSolidRect(rct, RGB(135, 206, 250));	// lightsky blue, fill rectangle
    	CFont font;
    	LOGFONT lf;
    	memset(&lf, 0, sizeof(LOGFONT));
    	lf.lfHeight = 18;
    	// True Type font for nice digits
    	strcpy_s(lf.lfFaceName, sizeof("Courier New"), "Courier New");
    	lf.lfWeight = FW_BOLD;
    	font.CreateFontIndirect(&lf);
    	CFont *pOldFont = (CFont *)pDC->SelectObject(&font);
     
    	CBrush brush;
    	// lightsky blue for the brush
    	brush.CreateSolidBrush(RGB(135, 206, 250));
    	CBrush *pOldBrush = pDC->SelectObject(&brush);
    		
    	TEXTMETRIC tm;
    	pDC->GetTextMetrics(&tm);
        
    	// Store some useful text metrics
    	m_sizeCharScn.cy = tm.tmHeight + tm.tmExternalLeading;
    	m_sizeCharScn.cx = tm.tmAveCharWidth; 
    	rct.left += m_sizeCharScn.cx * 2;
    	rct.top += m_sizeCharScn.cy * 6;
    	pDC->SetTextColor(RGB(0,0,96));	// gunmetal blue
    	// Copy static text
    	for(int index = 0; index < 4; index++)
    	{
    		switch(index) {
    			case 0: pWnd = GetDlgItem(IDC_STATIC_NUM);
    				break;
    			case 1: pWnd = GetDlgItem(IDC_STATIC_NUM_ONE);
    				break;
    			case 2:	pWnd = GetDlgItem(IDC_STATIC_NUM_TWO);
    				break;
    			case 3:	pWnd = GetDlgItem(IDC_STATIC_NUM_THREE);
    				break;
    		}
    		pWnd->GetWindowText(szStr);
    		pDC->TextOut(rct.left, rct.top, szStr);
    		rct.top += m_sizeCharScn.cy;
    	}
    	pDC->SelectObject(pOldBrush);
    	pDC->SelectObject(pOldFont);
     
    	return FALSE;
    }

    同样,让程序隐藏下一个代码的静态窗口: 隐藏,复制Code

    // Hide Static Text Window
    void CBigNumberDlg::OnBnClickedHide()
    {
    	// TODO: Add your control notification handler code here
    	CWnd *pWnd;
    	// Hide the four values
    	for(int index = 0; index > 4; index++)
    	{
    		switch(index) {
    			case 0: pWnd = GetDlgItem(IDC_STATIC_NUM);
    				break;
    			case 1: pWnd = GetDlgItem(IDC_STATIC_NUM_ONE);
    				break;
    			case 2:	pWnd = GetDlgItem(IDC_STATIC_NUM_TWO);
    				break;
    			case 3:	pWnd = GetDlgItem(IDC_STATIC_NUM_THREE);
    				break;
    		}
    		Sleep(250);	// Just so you can watch them get zapped.
    		pWnd->ShowWindow(SW_HIDE);
    	}
    }

    的兴趣点 在你阅读帮助库之前,CString.Format(…)是一个小书签。 隐藏,复制Code

    szStr.Format(_T("%0.10I64d = 0x0%0.8I64X to (%0.10I64d)-1 = 0x0%0.8I64X"),
        m_nLow, m_nLow, m_nHigh, m_nHigh-1);

    历史 2011年2月28日,BigNumber 1.0版本 本文转载于:http://www.diyabc.com/frontweb/news10991.html

  • 相关阅读:
    设置一个alias直接推到github
    JSON
    分部式类定义
    sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
    ibatis 连接数据库时的错误
    ibatis 连接数据库
    [ASP.NET] C#字符串处理
    20130401学习笔记
    最大公约数和最小公倍数
    从客户端中检测到有潜在危险的 Request.Form 值 解决方案
  • 原文地址:https://www.cnblogs.com/Dincat/p/13473299.html
Copyright © 2011-2022 走看看