亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? justify2.c

?? widows編程例題程序13-18章
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*-----------------------------------------
   JUSTIFY2.C -- Justified Type Program #2
                 (c) Charles Petzold, 1998
  -----------------------------------------*/

#include <windows.h>
#include "resource.h"

#define OUTWIDTH 6       // Width of formatted output in inches
#define LASTCHAR 127     // Last character code used in text

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

TCHAR szAppName[] = TEXT ("Justify2") ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     HWND     hwnd ;
     MSG      msg ;
     WNDCLASS wndclass ;
     
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = szAppName ;
     wndclass.lpszClassName = szAppName ;
     
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
               szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     
     hwnd = CreateWindow (szAppName, TEXT ("Justified Type #2"),
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
     
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
     
     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }
     return msg.wParam ;
}

void DrawRuler (HDC hdc, RECT * prc)
{
     static int iRuleSize [16] = { 360, 72, 144, 72, 216, 72, 144, 72,
                                   288, 72, 144, 72, 216, 72, 144, 72 } ;
     int        i, j ;
     POINT      ptClient ;
     
     SaveDC (hdc) ;
     
          // Set Logical Twips mapping mode
     
     SetMapMode (hdc, MM_ANISOTROPIC) ;
     SetWindowExtEx (hdc, 1440, 1440, NULL) ;
     SetViewportExtEx (hdc, GetDeviceCaps (hdc, LOGPIXELSX),
                            GetDeviceCaps (hdc, LOGPIXELSY), NULL) ;
     
          // Move the origin to a half inch from upper left
     
     SetWindowOrgEx (hdc, -720, -720, NULL) ;
     
          // Find the right margin (quarter inch from right)
     
     ptClient.x = prc->right ;
     ptClient.y = prc->bottom ;
     DPtoLP (hdc, &ptClient, 1) ;
     ptClient.x -= 360 ;
     
          // Draw the rulers
     
     MoveToEx (hdc, 0,               -360, NULL) ;
     LineTo   (hdc, OUTWIDTH * 1440, -360) ;
     MoveToEx (hdc, -360,               0, NULL) ;
     LineTo   (hdc, -360,      ptClient.y) ;
     
     for (i = 0, j = 0 ; i <= ptClient.x && i <= OUTWIDTH * 1440 ;
                         i += 1440 / 16, j++)
     {
          MoveToEx (hdc, i, -360, NULL) ;
          LineTo   (hdc, i, -360 - iRuleSize [j % 16]) ;
     }
     
     for (i = 0, j = 0 ; i <= ptClient.y ; i += 1440 / 16, j++)
     {
          MoveToEx (hdc, -360, i, NULL) ;
          LineTo   (hdc, -360 - iRuleSize [j % 16], i) ;
     }
     
     RestoreDC (hdc, -1) ;
}

/*----------------------------------------------------------------------
   GetCharDesignWidths:  Gets character widths for font as large as the
                         original design size
  ----------------------------------------------------------------------*/

UINT GetCharDesignWidths (HDC hdc, UINT uFirst, UINT uLast, int * piWidths)
{
     HFONT             hFont, hFontDesign ;
     LOGFONT           lf ;
     OUTLINETEXTMETRIC otm ;

     hFont = GetCurrentObject (hdc, OBJ_FONT) ;
     GetObject (hFont, sizeof (LOGFONT), &lf) ;

          // Get outline text metrics (we'll only be using a field that is
          //   independent of the DC the font is selected into)

     otm.otmSize = sizeof (OUTLINETEXTMETRIC) ;
     GetOutlineTextMetrics (hdc, sizeof (OUTLINETEXTMETRIC), &otm) ;

          // Create a new font based on the design size

     lf.lfHeight = - (int) otm.otmEMSquare ;
     lf.lfWidth  = 0 ;
     hFontDesign = CreateFontIndirect (&lf) ;

          // Select the font into the DC and get the character widths

     SaveDC (hdc) ;
     SetMapMode (hdc, MM_TEXT) ;
     SelectObject (hdc, hFontDesign) ;

     GetCharWidth (hdc, uFirst, uLast, piWidths) ;
     SelectObject (hdc, hFont) ;
     RestoreDC (hdc, -1) ;

          // Clean up

     DeleteObject (hFontDesign) ;

     return otm.otmEMSquare ;
}

/*---------------------------------------------------------------------
   GetScaledWidths:  Gets floating point character widths for selected
                     font size
  ---------------------------------------------------------------------*/

void GetScaledWidths (HDC hdc, double * pdWidths)
{
     double  dScale ;
     HFONT   hFont ;
     int     aiDesignWidths [LASTCHAR + 1] ;
     int     i ;
     LOGFONT lf ;
     UINT    uEMSquare ;

          // Call function above

     uEMSquare = GetCharDesignWidths (hdc, 0, LASTCHAR, aiDesignWidths) ;

          // Get LOGFONT for current font in device context

     hFont = GetCurrentObject (hdc, OBJ_FONT) ;
     GetObject (hFont, sizeof (LOGFONT), &lf) ;

          // Scale the widths and store as floating point values

     dScale = (double) -lf.lfHeight / (double) uEMSquare ;

     for (i = 0 ; i <= LASTCHAR ; i++)
          pdWidths[i] = dScale * aiDesignWidths[i] ;
}

/*--------------------------------------------------------------
   GetTextExtentFloat:  Calculates text width in floating point
  --------------------------------------------------------------*/

double GetTextExtentFloat (double * pdWidths, PTSTR psText, int iCount)
{
     double dWidth = 0 ;
     int    i ;

     for (i = 0 ; i < iCount ; i++)
          dWidth += pdWidths [psText[i]] ;

     return dWidth ;
}

/*------------------------------------------------------------------
   Justify:  Based on design units for screen/printer compatibility
  ------------------------------------------------------------------*/

void Justify (HDC hdc, PTSTR pText, RECT * prc, int iAlign)
{
     double dWidth, adWidths[LASTCHAR + 1] ;
     int    xStart, yStart, cSpaceChars ;
     PTSTR  pBegin, pEnd ;
     SIZE   size ;

          // Fill the adWidths array with floating point character widths

     GetScaledWidths (hdc, adWidths) ;

     yStart = prc->top ;
     do                            // for each text line
     {
          cSpaceChars = 0 ;        // initialize number of spaces in line

          while (*pText == ' ')    // skip over leading spaces
               pText++ ;

          pBegin = pText ;         // set pointer to char at beginning of line
          
          do                       // until the line is known
          {
               pEnd = pText ;      // set pointer to char at end of line

                    // skip to next space 
               
               while (*pText != '\0' && *pText++ != ' ') ;

               if (*pText == '\0')
                    break ;

                    // after each space encountered, calculate extents

               cSpaceChars++ ;
               dWidth = GetTextExtentFloat (adWidths, pBegin, 
                                                      pText - pBegin - 1) ;
          }
          while (dWidth < (double) (prc->right - prc->left)) ;
          
          cSpaceChars-- ;               // discount last space at end of line
          
          while (*(pEnd - 1) == ' ')    // eliminate trailing spaces
          {
               pEnd-- ;
               cSpaceChars-- ;
          }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人av影视| 欧美一区二区三区视频在线| 国产精品久线在线观看| eeuss影院一区二区三区| 中文欧美字幕免费| 91社区在线播放| 午夜精品久久久久久久 | 99热99精品| 亚洲精品久久久蜜桃| 欧美日韩亚洲综合一区二区三区| 丝袜美腿亚洲色图| 久久久精品中文字幕麻豆发布| 国产乱人伦精品一区二区在线观看| 国产精品毛片大码女人| 在线观看视频一区二区 | 国产三级久久久| 色诱亚洲精品久久久久久| 日韩精品色哟哟| 国产亚洲精久久久久久| 色视频欧美一区二区三区| 日本视频免费一区| 国产日韩在线不卡| 欧美三级欧美一级| 国产黑丝在线一区二区三区| 中文字幕在线观看不卡| 欧美日韩中文字幕一区| 国产成人午夜高潮毛片| 一区二区三区毛片| 精品成人在线观看| 亚洲亚洲精品在线观看| 国产精品小仙女| 亚洲一区免费观看| 99久久精品免费精品国产| 亚洲国产精品影院| 亚洲国产精品激情在线观看| 欧美性欧美巨大黑白大战| 国产精品主播直播| 肉丝袜脚交视频一区二区| 欧美日韩中字一区| 欧美日韩精品三区| 91精品国产综合久久香蕉麻豆| 欧美嫩在线观看| 欧美精品一卡二卡| 日韩午夜电影在线观看| 日韩欧美国产综合| 欧美成人video| 欧美精品一区二| 久久一区二区视频| 国产日韩欧美亚洲| 中文字幕亚洲区| 亚洲精品国产精华液| 日日夜夜免费精品| 久久国产精品72免费观看| 国产成人小视频| 91在线免费看| 欧美日韩日日摸| 91精品国产综合久久精品 | 久久亚洲影视婷婷| 国产精品动漫网站| 一区二区三区成人| 欧美精品亚洲一区二区在线播放| 7777精品伊人久久久大香线蕉| 日韩久久精品一区| 国产精品久久网站| 亚洲综合色噜噜狠狠| 丝袜美腿亚洲色图| 国产馆精品极品| 91欧美一区二区| 91精品婷婷国产综合久久竹菊| 欧美不卡一区二区| 国产精品伦一区| 午夜欧美一区二区三区在线播放| 麻豆精品国产传媒mv男同| 风间由美一区二区av101| 94-欧美-setu| 91精品国产色综合久久 | 性做久久久久久| 国产精品69毛片高清亚洲| 91久久久免费一区二区| 91麻豆精品国产| 中文在线资源观看网站视频免费不卡| 亚洲精品福利视频网站| 国产在线视频精品一区| 欧美在线综合视频| 久久理论电影网| 亚洲午夜免费电影| 国产成人8x视频一区二区| 欧美亚洲一区三区| 国产日韩高清在线| 午夜久久久影院| 成a人片国产精品| 欧美一级黄色录像| 亚洲综合成人网| 成人一区二区三区中文字幕| 欧美疯狂性受xxxxx喷水图片| 日本一区二区成人| 麻豆一区二区99久久久久| 色噜噜夜夜夜综合网| 久久久久久97三级| 免费黄网站欧美| 91久久精品一区二区| 国产日产欧产精品推荐色| 婷婷国产在线综合| 色狠狠一区二区| 国产精品久久久久久久岛一牛影视 | 91蝌蚪国产九色| 欧美精品一区二区在线播放| 夜夜精品浪潮av一区二区三区| 国产精品影视在线观看| 欧美一区二区视频在线观看| 一区二区在线观看免费视频播放| 国产精品一区二区久久不卡| 欧美一级片在线观看| 洋洋成人永久网站入口| 99免费精品视频| 国产精品久久毛片a| 国产一区中文字幕| 精品福利一区二区三区免费视频| 亚洲高清不卡在线观看| 一本久久a久久精品亚洲| 国产精品久久久久久亚洲伦| 国产大陆亚洲精品国产| 亚洲精品在线三区| 麻豆视频一区二区| 欧美mv日韩mv亚洲| 久久成人免费网| 欧美r级在线观看| 国产真实乱对白精彩久久| 精品美女一区二区| 久久99精品国产91久久来源| 欧美一区在线视频| 免费欧美高清视频| 日韩欧美美女一区二区三区| 秋霞电影网一区二区| 欧美丰满嫩嫩电影| 日本少妇一区二区| 欧美精品一区二区三区四区 | 99在线精品一区二区三区| 亚洲国产成人自拍| www.亚洲在线| 亚洲免费视频中文字幕| 色哟哟国产精品| 亚洲国产美女搞黄色| 欧美日本韩国一区二区三区视频 | 国内久久婷婷综合| 久久久久久久久一| 成人av网站在线观看| 亚洲色图清纯唯美| 色嗨嗨av一区二区三区| 午夜影视日本亚洲欧洲精品| 视频一区二区国产| 欧美tickling网站挠脚心| 国产一区二区日韩精品| 国产精品视频第一区| 91亚洲资源网| 亚洲777理论| 日韩午夜激情av| 丁香婷婷综合色啪| 亚洲人成伊人成综合网小说| 欧美日韩一区二区电影| 青草av.久久免费一区| 久久综合久久综合久久| 国产suv一区二区三区88区| 亚洲欧美在线视频观看| 制服丝袜av成人在线看| 国产精品一二二区| 亚洲欧美日韩成人高清在线一区| 欧美高清你懂得| 国产在线乱码一区二区三区| 国产精品不卡在线观看| 欧美日本一区二区三区| 国产高清不卡二三区| 尤物av一区二区| 欧美成人video| 91网站视频在线观看| 人妖欧美一区二区| 国产精品短视频| 91精品国产欧美一区二区成人| 国产iv一区二区三区| 亚洲一区在线观看免费| 欧美变态tickling挠脚心| av高清久久久| 精品在线你懂的| 洋洋av久久久久久久一区| 久久嫩草精品久久久精品| 在线观看亚洲一区| 国产乱国产乱300精品| 亚洲午夜免费视频| 国产精品你懂的| 欧美tk—视频vk| 欧美丝袜自拍制服另类| 国产精品亚洲一区二区三区在线| 一区二区久久久久久| 国产经典欧美精品| 亚洲福利一区二区三区| 国产精品美女久久久久久久久| 欧美高清你懂得| 色噜噜久久综合| av一区二区三区在线| 久草在线在线精品观看|