• API code


      1 /*---------------------------------------------------
      2    BLOKOUT2.C -- Mouse Button & Capture Demo Program
      3                  (c) Charles Petzold, 1998
      4   ---------------------------------------------------*/
      5  
      6 #include <windows.h>
      7 #include <windowsx.h>
      8 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
      9 
     10 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
     11                     PSTR szCmdLine, int iCmdShow)
     12 {
     13      static TCHAR szAppName[] = TEXT ("BlokOut2") ;
     14      HWND         hwnd ;
     15      MSG          msg ;
     16      WNDCLASS     wndclass ;
     17 
     18      wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     19      wndclass.lpfnWndProc   = WndProc ;
     20      wndclass.cbClsExtra    = 0 ;
     21      wndclass.cbWndExtra    = 0 ;
     22      wndclass.hInstance     = hInstance ;
     23      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     24      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     25      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     26      wndclass.lpszMenuName  = NULL ;
     27      wndclass.lpszClassName = szAppName ;
     28      
     29      if (!RegisterClass (&wndclass))
     30      {
     31           MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
     32                       szAppName, MB_ICONERROR) ;
     33           return 0 ;
     34      }
     35      
     36      hwnd = CreateWindow (szAppName, TEXT ("Mouse Button & Capture Demo"),
     37                           WS_OVERLAPPEDWINDOW,
     38                           CW_USEDEFAULT, CW_USEDEFAULT,
     39                           CW_USEDEFAULT, CW_USEDEFAULT,
     40                           NULL, NULL, hInstance, NULL) ;
     41      
     42      ShowWindow (hwnd, iCmdShow) ;
     43      UpdateWindow (hwnd) ;
     44      
     45      while (GetMessage (&msg, NULL, 0, 0))
     46      {
     47           TranslateMessage (&msg) ;
     48           DispatchMessage (&msg) ;
     49      }
     50      return msg.wParam ;
     51 }
     52 
     53 void DrawBoxOutline (HWND hwnd, POINT ptBeg, POINT ptEnd)
     54 {
     55      HDC hdc ;
     56      
     57      hdc = GetDC (hwnd) ;
     58      
     59      SetROP2 (hdc, R2_NOT) ;
     60      SelectObject (hdc, GetStockObject (NULL_BRUSH)) ;
     61      Rectangle (hdc, ptBeg.x, ptBeg.y, ptEnd.x, ptEnd.y) ;
     62      
     63      ReleaseDC (hwnd, hdc) ;
     64 }
     65 
     66 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
     67 {
     68      static BOOL  fBlocking, fValidBox ;
     69      static POINT ptBeg, ptEnd, ptBoxBeg, ptBoxEnd ;
     70      HDC          hdc ;
     71      PAINTSTRUCT  ps ;
     72      
     73      switch (message)
     74      {
     75      case WM_LBUTTONDOWN :
     76           ptBeg.x = ptEnd.x = GET_X_LPARAM (lParam) ;
     77           ptBeg.y = ptEnd.y = GET_Y_LPARAM (lParam) ;
     78           
     79           DrawBoxOutline (hwnd, ptBeg, ptEnd) ;
     80           
     81           SetCapture (hwnd) ;
     82           SetCursor (LoadCursor (NULL, IDC_CROSS)) ;
     83           
     84           fBlocking = TRUE ;
     85           return 0 ;
     86           
     87      case WM_MOUSEMOVE :
     88           if (fBlocking)
     89           {
     90                SetCursor (LoadCursor (NULL, IDC_CROSS)) ;
     91                
     92                DrawBoxOutline (hwnd, ptBeg, ptEnd) ;
     93                
     94                ptEnd.x = GET_X_LPARAM (lParam) ;
     95                ptEnd.y = GET_Y_LPARAM (lParam) ;
     96                
     97                DrawBoxOutline (hwnd, ptBeg, ptEnd) ;
     98           }
     99           return 0 ;
    100           
    101      case WM_LBUTTONUP :
    102           if (fBlocking)
    103           {
    104                DrawBoxOutline (hwnd, ptBeg, ptEnd) ;
    105                
    106                ptBoxBeg   = ptBeg ;
    107                ptBoxEnd.x = GET_X_LPARAM (lParam) ;
    108                ptBoxEnd.y = GET_Y_LPARAM (lParam) ;
    109                
    110                ReleaseCapture () ;
    111                SetCursor (LoadCursor (NULL, IDC_ARROW)) ;
    112                
    113                fBlocking = FALSE ;
    114                fValidBox  = TRUE ;
    115                
    116                InvalidateRect (hwnd, NULL, TRUE) ;
    117           }
    118           return 0 ;
    119           
    120      case WM_CHAR :
    121           if (fBlocking & (wParam == 'x1B'))     // i.e., Escape
    122           {
    123                DrawBoxOutline (hwnd, ptBeg, ptEnd) ;
    124 
    125                ReleaseCapture () ;
    126                SetCursor (LoadCursor (NULL, IDC_ARROW)) ;
    127                
    128                fBlocking = FALSE ;
    129           }
    130           return 0 ;
    131           
    132      case WM_PAINT :
    133           hdc = BeginPaint (hwnd, &ps) ;
    134           
    135           if (fValidBox)
    136           {
    137                SelectObject (hdc, GetStockObject (BLACK_BRUSH)) ;
    138                Rectangle (hdc, ptBoxBeg.x, ptBoxBeg.y,
    139                                ptBoxEnd.x, ptBoxEnd.y) ;
    140           }
    141           
    142           if (fBlocking)
    143           {
    144                SetROP2 (hdc, R2_NOT) ;
    145                SelectObject (hdc, GetStockObject (NULL_BRUSH)) ;
    146                Rectangle (hdc, ptBeg.x, ptBeg.y, ptEnd.x, ptEnd.y) ;
    147           }
    148           
    149           EndPaint (hwnd, &ps) ;
    150           return 0 ;
    151           
    152      case WM_DESTROY :
    153           PostQuitMessage (0) ;
    154           return 0 ;
    155      }
    156      return DefWindowProc (hwnd, message, wParam, lParam) ;
    157 }
     1 /*-----------------------------------------
     2    BEEPER1.C  -- Timer Demo Program No. 1
     3                  (c) Charles Petzold, 1998
     4   -----------------------------------------*/
     5  
     6 #include <windows.h>
     7 
     8 #define ID_TIMER    1
     9 
    10 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    11 
    12 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
    13                     PSTR szCmdLine, int iCmdShow)
    14 {
    15      static TCHAR szAppName[] = TEXT ("Beeper1") ;
    16      HWND         hwnd ;
    17      MSG          msg ;
    18      WNDCLASS     wndclass ;
    19      
    20      wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
    21      wndclass.lpfnWndProc   = WndProc ;
    22      wndclass.cbClsExtra    = 0 ;
    23      wndclass.cbWndExtra    = 0 ;
    24      wndclass.hInstance     = hInstance ;
    25      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
    26      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
    27      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
    28      wndclass.lpszMenuName  = NULL ;
    29      wndclass.lpszClassName = szAppName ;
    30      
    31      if (!RegisterClass (&wndclass))
    32      {
    33           MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
    34                       szAppName, MB_ICONERROR) ;
    35           return 0 ;
    36      }
    37      
    38      hwnd = CreateWindow (szAppName, TEXT ("Beeper1 Timer Demo"),
    39                           WS_OVERLAPPEDWINDOW,
    40                           CW_USEDEFAULT, CW_USEDEFAULT,
    41                           CW_USEDEFAULT, CW_USEDEFAULT,
    42                           NULL, NULL, hInstance, NULL) ;
    43           
    44      ShowWindow (hwnd, iCmdShow) ;
    45      UpdateWindow (hwnd) ;
    46           
    47      while (GetMessage (&msg, NULL, 0, 0))
    48      {
    49           TranslateMessage (&msg) ;
    50           DispatchMessage (&msg) ;
    51      }
    52      return msg.wParam ;
    53 }
    54 
    55 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    56 {
    57      static BOOL fFlipFlop = FALSE ;
    58      HBRUSH      hBrush ;
    59      HDC         hdc ;
    60      PAINTSTRUCT ps ;
    61      RECT        rc ;
    62      
    63      switch (message)
    64      {
    65      case WM_CREATE:
    66           SetTimer (hwnd, ID_TIMER, 1000, NULL) ;
    67           return 0 ;
    68 
    69      case WM_TIMER :
    70           MessageBeep (-1) ;          
    71           fFlipFlop = !fFlipFlop ;
    72           InvalidateRect (hwnd, NULL, FALSE) ;
    73           return 0 ;
    74           
    75      case WM_PAINT :
    76           hdc = BeginPaint (hwnd, &ps) ;
    77           
    78           GetClientRect (hwnd, &rc) ;
    79           hBrush = CreateSolidBrush (fFlipFlop ? RGB(255,0,0) : RGB(0,0,255)) ;
    80           FillRect (hdc, &rc, hBrush) ;
    81 
    82           EndPaint (hwnd, &ps) ;
    83           DeleteObject (hBrush) ;
    84           return 0 ;
    85           
    86      case WM_DESTROY :
    87           KillTimer (hwnd, ID_TIMER) ;
    88           PostQuitMessage (0) ;
    89           return 0 ;
    90      }
    91      return DefWindowProc (hwnd, message, wParam, lParam) ;
    92 }
     6 #include <windows.h>
     7 
     8 #define ID_TIMER    1
     9 
    10 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    11 
    12 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
    13                     PSTR szCmdLine, int iCmdShow)
    14 {
    15      static TCHAR szAppName[] = TEXT ("Beeper1") ;
    16      HWND         hwnd ;
    17      MSG          msg ;
    18      WNDCLASS     wndclass ;
    19      
    20      wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
    21      wndclass.lpfnWndProc   = WndProc ;
    22      wndclass.cbClsExtra    = 0 ;
    23      wndclass.cbWndExtra    = 0 ;
    24      wndclass.hInstance     = hInstance ;
    25      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
    26      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
    27      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
    28      wndclass.lpszMenuName  = NULL ;
    29      wndclass.lpszClassName = szAppName ;
    30      
    31      if (!RegisterClass (&wndclass))
    32      {
    33           MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
    34                       szAppName, MB_ICONERROR) ;
    35           return 0 ;
    36      }
    37      
    38      hwnd = CreateWindow (szAppName, TEXT ("Beeper1 Timer Demo"),
    39                           WS_OVERLAPPEDWINDOW,
    40                           CW_USEDEFAULT, CW_USEDEFAULT,
    41                           CW_USEDEFAULT, CW_USEDEFAULT,
    42                           NULL, NULL, hInstance, NULL) ;
    43           
    44      ShowWindow (hwnd, iCmdShow) ;
    45      UpdateWindow (hwnd) ;
    46           
    47      while (GetMessage (&msg, NULL, 0, 0))
    48      {
    49           TranslateMessage (&msg) ;
    50           DispatchMessage (&msg) ;
    51      }
    52      return msg.wParam ;
    53 }
    54 
    55 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    56 {
    57      static BOOL fFlipFlop = FALSE ;
    58      HBRUSH      hBrush ;
    59      HDC         hdc ;
    60      PAINTSTRUCT ps ;
    61      RECT        rc ;
    62      
    63      switch (message)
    64      {
    65      case WM_CREATE:
    66           SetTimer (hwnd, ID_TIMER, 1000, NULL) ;
    67           return 0 ;
    68 
    69      case WM_TIMER :
    70           MessageBeep (-1) ;          
    71           fFlipFlop = !fFlipFlop ;
    72           InvalidateRect (hwnd, NULL, FALSE) ;
    73           return 0 ;
    74           
    75      case WM_PAINT :
    76           hdc = BeginPaint (hwnd, &ps) ;
    77           
    78           GetClientRect (hwnd, &rc) ;
    79           hBrush = CreateSolidBrush (fFlipFlop ? RGB(255,0,0) : RGB(0,0,255)) ;//red green  blue
    80           FillRect (hdc, &rc, hBrush) ;
    81 
    82           EndPaint (hwnd, &ps) ;
    83           DeleteObject (hBrush) ;
    84           return 0 ;
    85           
    86      case WM_DESTROY :
    87           KillTimer (hwnd, ID_TIMER) ;
    88           PostQuitMessage (0) ;
    89           return 0 ;
    90      }
    91      return DefWindowProc (hwnd, message, wParam, lParam) ;
    92 }
      1 /*-----------------------------------------
      2    DIGCLOCK.c -- Digital Clock
      3                  (c) Charles Petzold, 1998
      4   -----------------------------------------*/
      5  
      6 #include <windows.h>
      7 
      8 #define ID_TIMER    1
      9 
     10 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
     11 
     12 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
     13                     PSTR szCmdLine, int iCmdShow)
     14 {
     15      static TCHAR szAppName[] = TEXT ("DigClock") ;
     16      HWND         hwnd ;
     17      MSG          msg ;
     18      WNDCLASS     wndclass ;
     19 
     20      wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     21      wndclass.lpfnWndProc   = WndProc ;
     22      wndclass.cbClsExtra    = 0 ;
     23      wndclass.cbWndExtra    = 0 ;
     24      wndclass.hInstance     = hInstance ;
     25      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     26      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     27      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     28      wndclass.lpszMenuName  = NULL ;
     29      wndclass.lpszClassName = szAppName ;
     30 
     31      if (!RegisterClass (&wndclass))
     32      {
     33           MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
     34                       szAppName, MB_ICONERROR) ;
     35           return 0 ;
     36      }
     37 
     38      hwnd = CreateWindow (szAppName, TEXT ("Digital Clock"),
     39                           WS_OVERLAPPEDWINDOW,
     40                           CW_USEDEFAULT, CW_USEDEFAULT,
     41                           CW_USEDEFAULT, CW_USEDEFAULT,
     42                           NULL, NULL, hInstance, NULL) ;
     43 
     44      ShowWindow (hwnd, iCmdShow) ;
     45      UpdateWindow (hwnd) ;
     46 
     47      while (GetMessage (&msg, NULL, 0, 0))
     48           {
     49           TranslateMessage (&msg) ;
     50           DispatchMessage (&msg) ;
     51           }
     52      return msg.wParam ;
     53      }
     54 
     55 void DisplayDigit (HDC hdc, int iNumber)
     56 {
     57      static BOOL  fSevenSegment [10][7] = {
     58                          1, 1, 1, 0, 1, 1, 1,     // 0
     59                          0, 0, 1, 0, 0, 1, 0,     // 1
     60                          1, 0, 1, 1, 1, 0, 1,     // 2
     61                          1, 0, 1, 1, 0, 1, 1,     // 3
     62                          0, 1, 1, 1, 0, 1, 0,     // 4
     63                          1, 1, 0, 1, 0, 1, 1,     // 5
     64                          1, 1, 0, 1, 1, 1, 1,     // 6
     65                          1, 0, 1, 0, 0, 1, 0,     // 7
     66                          1, 1, 1, 1, 1, 1, 1,     // 8
     67                          1, 1, 1, 1, 0, 1, 1 } ;  // 9
     68      static POINT ptSegment [7][6] = {
     69                           7,  6,  11,  2,  31,  2,  35,  6,  31, 10,  11, 10,
     70                           6,  7,  10, 11,  10, 31,   6, 35,   2, 31,   2, 11,
     71                          36,  7,  40, 11,  40, 31,  36, 35,  32, 31,  32, 11,
     72                           7, 36,  11, 32,  31, 32,  35, 36,  31, 40,  11, 40,
     73                           6, 37,  10, 41,  10, 61,   6, 65,   2, 61,   2, 41,
     74                          36, 37,  40, 41,  40, 61,  36, 65,  32, 61,  32, 41,
     75                           7, 66,  11, 62,  31, 62,  35, 66,  31, 70,  11, 70 } ;
     76      int          iSeg ;
     77      
     78      for (iSeg = 0 ; iSeg < 7 ; iSeg++)
     79           if (fSevenSegment [iNumber][iSeg])
     80                Polygon (hdc, ptSegment [iSeg], 6) ;
     81 }
     82 
     83 void DisplayTwoDigits (HDC hdc, int iNumber, BOOL fSuppress)
     84 {
     85      if (!fSuppress || (iNumber / 10 != 0))
     86           DisplayDigit (hdc, iNumber / 10) ;
     87 
     88      OffsetWindowOrgEx (hdc, -42, 0, NULL) ;
     89      DisplayDigit (hdc, iNumber % 10) ;
     90      OffsetWindowOrgEx (hdc, -42, 0, NULL) ;
     91 }
     92 
     93 void DisplayColon (HDC hdc)
     94 {
     95      POINT ptColon [2][4] = { 2,  21,  6,  17,  10, 21,  6, 25,
     96                               2,  51,  6,  47,  10, 51,  6, 55 } ;
     97 
     98      Polygon (hdc, ptColon [0], 4) ;
     99      Polygon (hdc, ptColon [1], 4) ;
    100 
    101      OffsetWindowOrgEx (hdc, -12, 0, NULL) ;
    102 }
    103 
    104 void DisplayTime (HDC hdc, BOOL f24Hour, BOOL fSuppress)
    105 {
    106      SYSTEMTIME st ;
    107 
    108      GetLocalTime (&st) ;
    109 
    110      if (f24Hour)
    111           DisplayTwoDigits (hdc, st.wHour, fSuppress) ;
    112      else
    113           DisplayTwoDigits (hdc, (st.wHour %= 12) ? st.wHour : 12, fSuppress) ;
    114 
    115      DisplayColon (hdc) ;
    116      DisplayTwoDigits (hdc, st.wMinute, FALSE) ;
    117      DisplayColon (hdc) ;
    118      DisplayTwoDigits (hdc, st.wSecond, FALSE) ;
    119 }
    120 
    121 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    122 {
    123      static BOOL   f24Hour, fSuppress ;
    124      static HBRUSH hBrushRed ;
    125      static int    cxClient, cyClient ;
    126      HDC           hdc ;
    127      PAINTSTRUCT   ps ;
    128      TCHAR         szBuffer [2] ;
    129 
    130      switch (message)
    131      {
    132      case WM_CREATE:
    133           hBrushRed = CreateSolidBrush (RGB (255, 0, 0)) ;
    134           SetTimer (hwnd, ID_TIMER, 1000, NULL) ;
    135 
    136                                                   // fall through
    137 
    138      case WM_SETTINGCHANGE:
    139           GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITIME, szBuffer, 2) ;
    140           f24Hour = (szBuffer[0] == '1') ;
    141 
    142           GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITLZERO, szBuffer, 2) ;
    143           fSuppress = (szBuffer[0] == '0') ;
    144 
    145           InvalidateRect (hwnd, NULL, TRUE) ;
    146           return 0 ;
    147 
    148      case WM_SIZE:
    149           cxClient = LOWORD (lParam) ;
    150           cyClient = HIWORD (lParam) ;
    151           return 0 ;
    152 
    153      case WM_TIMER:
    154           InvalidateRect (hwnd, NULL, TRUE) ;
    155           return 0 ;
    156 
    157      case WM_PAINT:
    158           hdc = BeginPaint (hwnd, &ps) ;
    159 
    160           SetMapMode (hdc, MM_ISOTROPIC) ;
    161           SetWindowExtEx (hdc, 276, 72, NULL) ;
    162           SetViewportExtEx (hdc, cxClient, cyClient, NULL) ;
    163 
    164           SetWindowOrgEx (hdc, 138, 36, NULL) ;
    165           SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;
    166 
    167           SelectObject (hdc, GetStockObject (NULL_PEN)) ;
    168           SelectObject (hdc, hBrushRed) ;
    169 
    170           DisplayTime (hdc, f24Hour, fSuppress) ;
    171 
    172           EndPaint (hwnd, &ps) ;
    173           return 0 ;
    174 
    175      case WM_DESTROY:
    176           KillTimer (hwnd, ID_TIMER) ;
    177           DeleteObject (hBrushRed) ;
    178           PostQuitMessage (0) ;
    179           return 0 ;
    180      }
    181      return DefWindowProc (hwnd, message, wParam, lParam) ;
    182 }
  • 相关阅读:
    MDaemon运行六年方法
    [转帖]如何将一张图片写入数据库SQL,并能正确在C#网页中显示
    【转】CSS 与 HTML5 响应式图片
    【原】设计稿中字体pt与px之间的转化
    【原】[webkit移动开发笔记]之使用chrome进行手机开发
    【原】[webkit移动开发笔记]之兼容iPhone4和iPhone5的方法
    【原】[webkit移动开发笔记]之空链接是使用javascript:void(0)还是使用#none
    CSS3Ps Photoshop图层特效转CSS3代码
    【原】[webkit移动开发笔记]之CSS3径向渐变
    【转】浏览器加载渲染网页过程解析总结(三)
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3263705.html
Copyright © 2020-2023  润新知