zoukankan      html  css  js  c++  java
  • &与&& C语言

    &是一个位运算符,就是将两个二进制的数逐位相与,就是都是1才是1,只要有一个为0则为0,结果是相与之后的结果。
    &&是一个逻辑运算符,就是判断两个表达式的真假性,只有两个表达式同时为真才为真,有一个为假则为假,具有短路性质。

      1 /*-------------------------------------------------
      2    CHECKER4.C -- Mouse Hit-Test Demo Program No. 4
      3                  (c) Charles Petzold, 1998
      4   -------------------------------------------------*/
      5 
      6 #include <windows.h>
      7  
      8 #define DIVISIONS 5
      9 
     10 LRESULT CALLBACK WndProc   (HWND, UINT, WPARAM, LPARAM) ;
     11 LRESULT CALLBACK ChildWndProc (HWND, UINT, WPARAM, LPARAM) ;
     12 
     13 int   idFocus = 0 ;
     14 TCHAR szChildClass[] = TEXT ("Checker4_Child") ;
     15 
     16 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
     17                     PSTR szCmdLine, int iCmdShow)
     18 {
     19      static TCHAR szAppName[] = TEXT ("Checker4") ;
     20      HWND         hwnd ;
     21      MSG          msg ;
     22      WNDCLASS     wndclass ;
     23      
     24      wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     25      wndclass.lpfnWndProc   = WndProc ;
     26      wndclass.cbClsExtra    = 0 ;
     27      wndclass.cbWndExtra    = 0 ;
     28      wndclass.hInstance     = hInstance ;
     29      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     30      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     31      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     32      wndclass.lpszMenuName  = NULL ;
     33      wndclass.lpszClassName = szAppName ;
     34      
     35      if (!RegisterClass (&wndclass))
     36      {
     37           MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
     38                       szAppName, MB_ICONERROR) ;
     39           return 0 ;
     40      }
     41      
     42      wndclass.lpfnWndProc   = ChildWndProc ;
     43      wndclass.cbWndExtra    = sizeof (long) ;
     44      wndclass.hIcon         = NULL ;
     45      wndclass.lpszClassName = szChildClass ;
     46      
     47      RegisterClass (&wndclass) ;
     48      
     49      hwnd = CreateWindow (szAppName, TEXT ("Checker4 Mouse Hit-Test Demo"),
     50                           WS_OVERLAPPEDWINDOW,
     51                           CW_USEDEFAULT, CW_USEDEFAULT,
     52                           CW_USEDEFAULT, CW_USEDEFAULT,
     53                           NULL, NULL, hInstance, NULL) ;
     54      
     55      ShowWindow (hwnd, iCmdShow) ;
     56      UpdateWindow (hwnd) ;
     57      
     58      while (GetMessage (&msg, NULL, 0, 0))
     59      {
     60           TranslateMessage (&msg) ;
     61           DispatchMessage (&msg) ;
     62      }
     63      return msg.wParam ;
     64 }
     65 
     66 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
     67 {
     68      static HWND hwndChild[DIVISIONS][DIVISIONS] ;
     69      int         cxBlock, cyBlock, x, y ;
     70      
     71      switch (message)
     72      {
     73      case WM_CREATE :
     74           for (x = 0 ; x < DIVISIONS ; x++)
     75                for (y = 0 ; y < DIVISIONS ; y++)
     76                     hwndChild[x][y] = CreateWindow (szChildClass, NULL,
     77                               WS_CHILDWINDOW | WS_VISIBLE,
     78                               0, 0, 0, 0,
     79                               hwnd, (HMENU) (y << 8 | x),
     80                               (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE),
     81                               NULL) ;
     82           return 0 ;
     83                
     84      case WM_SIZE :
     85           cxBlock = LOWORD (lParam) / DIVISIONS ;
     86           cyBlock = HIWORD (lParam) / DIVISIONS ;
     87           
     88           for (x = 0 ; x < DIVISIONS ; x++)
     89                 for (y = 0 ; y < DIVISIONS ; y++)
     90                     MoveWindow (hwndChild[x][y],
     91                                 x * cxBlock, y * cyBlock,
     92                                 cxBlock, cyBlock, TRUE) ;
     93           return 0 ;
     94                        
     95      case WM_LBUTTONDOWN :
     96           MessageBeep (0) ;
     97           return 0 ;
     98 
     99           // On set-focus message, set focus to child window
    100 
    101      case WM_SETFOCUS:
    102           SetFocus (GetDlgItem (hwnd, idFocus)) ;
    103           return 0 ;
    104 
    105           // On key-down message, possibly change the focus window
    106 
    107      case WM_KEYDOWN:
    108           x = idFocus & 0xFF ;
    109           y = idFocus >> 8 ;
    110 
    111           switch (wParam)
    112           {
    113           case VK_UP:    y-- ;                    break ;
    114           case VK_DOWN:  y++ ;                    break ;
    115           case VK_LEFT:  x-- ;                    break ;
    116           case VK_RIGHT: x++ ;                    break ;
    117           case VK_HOME:  x = y = 0 ;              break ;
    118           case VK_END:   x = y = DIVISIONS - 1 ;  break ;
    119           default:       return 0 ;
    120           }
    121 
    122           x = (x + DIVISIONS) % DIVISIONS ;
    123           y = (y + DIVISIONS) % DIVISIONS ;
    124 
    125           idFocus = y << 8 | x ;
    126 
    127           SetFocus (GetDlgItem (hwnd, idFocus)) ;
    128           return 0 ;
    129 
    130      case WM_DESTROY :
    131           PostQuitMessage (0) ;
    132           return 0 ;
    133      }
    134      return DefWindowProc (hwnd, message, wParam, lParam) ;
    135 }
    136 
    137 LRESULT CALLBACK ChildWndProc (HWND hwnd, UINT message, 
    138                                WPARAM wParam, LPARAM lParam)
    139 {
    140      HDC         hdc ;
    141      PAINTSTRUCT ps ;
    142      RECT        rect ;
    143      
    144      switch (message)
    145      {
    146      case WM_CREATE :
    147           SetWindowLong (hwnd, 0, 0) ;       // on/off flag
    148           return 0 ;
    149 
    150      case WM_KEYDOWN:
    151                // Send most key presses to the parent window
    152           
    153           if (wParam != VK_RETURN && wParam != VK_SPACE)
    154           {
    155                SendMessage (GetParent (hwnd), message, wParam, lParam) ;
    156                return 0 ;
    157           }
    158                // For Return and Space, fall through to toggle the square
    159           
    160      case WM_LBUTTONDOWN :
    161           SetWindowLong (hwnd, 0, 1 ^ GetWindowLong (hwnd, 0)) ;
    162           SetFocus (hwnd) ;
    163           InvalidateRect (hwnd, NULL, FALSE) ;
    164           return 0 ;
    165 
    166                // For focus messages, invalidate the window for repaint
    167           
    168      case WM_SETFOCUS:
    169           idFocus = GetWindowLong (hwnd, GWL_ID) ;
    170 
    171                // Fall through
    172 
    173      case WM_KILLFOCUS:
    174           InvalidateRect (hwnd, NULL, TRUE) ;
    175           return 0 ;
    176           
    177      case WM_PAINT :
    178           hdc = BeginPaint (hwnd, &ps) ;
    179           
    180           GetClientRect (hwnd, &rect) ;
    181           Rectangle (hdc, 0, 0, rect.right, rect.bottom) ;
    182 
    183                // Draw the "x" mark
    184           
    185           if (GetWindowLong (hwnd, 0))
    186           {
    187                MoveToEx (hdc, 0,          0, NULL) ;
    188                LineTo   (hdc, rect.right, rect.bottom) ;
    189                MoveToEx (hdc, 0,          rect.bottom, NULL) ;
    190                LineTo   (hdc, rect.right, 0) ;
    191           }
    192 
    193                // Draw the "focus" rectangle
    194           
    195           if (hwnd == GetFocus ())
    196           {
    197                rect.left   += rect.right / 10 ;
    198                rect.right  -= rect.left ;
    199                rect.top    += rect.bottom / 10 ;
    200                rect.bottom -= rect.top ;
    201 
    202                SelectObject (hdc, GetStockObject (NULL_BRUSH)) ;
    203                SelectObject (hdc, CreatePen (PS_DASH, 0, 0)) ;
    204                Rectangle (hdc, rect.left, rect.top, rect.right, rect.bottom) ;
    205                DeleteObject (SelectObject (hdc, GetStockObject (BLACK_PEN))) ;
    206           }
    207 
    208           EndPaint (hwnd, &ps) ;
    209           return 0 ;
    210      }
    211      return DefWindowProc (hwnd, message, wParam, lParam) ;
    212 }
    
    
    
      1 /*-------------------------------------------------
      2    CHECKER4.C -- Mouse Hit-Test Demo Program No. 4
      3                  (c) Charles Petzold, 1998
      4   -------------------------------------------------*/
      5 
      6 #include <windows.h>
      7  
      8 #define DIVISIONS 5
      9 
     10 LRESULT CALLBACK WndProc   (HWND, UINT, WPARAM, LPARAM) ;
     11 LRESULT CALLBACK ChildWndProc (HWND, UINT, WPARAM, LPARAM) ;
     12 
     13 int   idFocus = 0 ;
     14 TCHAR szChildClass[] = TEXT ("Checker4_Child") ;
     15 
     16 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
     17                     PSTR szCmdLine, int iCmdShow)
     18 {
     19      static TCHAR szAppName[] = TEXT ("Checker4") ;
     20      HWND         hwnd ;
     21      MSG          msg ;
     22      WNDCLASS     wndclass ;
     23      
     24      wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     25      wndclass.lpfnWndProc   = WndProc ;
     26      wndclass.cbClsExtra    = 0 ;
     27      wndclass.cbWndExtra    = 0 ;
     28      wndclass.hInstance     = hInstance ;
     29      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     30      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     31      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     32      wndclass.lpszMenuName  = NULL ;
     33      wndclass.lpszClassName = szAppName ;
     34      
     35      if (!RegisterClass (&wndclass))
     36      {
     37           MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
     38                       szAppName, MB_ICONERROR) ;
     39           return 0 ;
     40      }
     41      
     42      wndclass.lpfnWndProc   = ChildWndProc ;
     43      wndclass.cbWndExtra    = sizeof (long) ;
     44      wndclass.hIcon         = NULL ;
     45      wndclass.lpszClassName = szChildClass ;
     46      
     47      RegisterClass (&wndclass) ;
     48      
     49      hwnd = CreateWindow (szAppName, TEXT ("Checker4 Mouse Hit-Test Demo"),
     50                           WS_OVERLAPPEDWINDOW,
     51                           CW_USEDEFAULT, CW_USEDEFAULT,
     52                           CW_USEDEFAULT, CW_USEDEFAULT,
     53                           NULL, NULL, hInstance, NULL) ;
     54      
     55      ShowWindow (hwnd, iCmdShow) ;
     56      UpdateWindow (hwnd) ;
     57      
     58      while (GetMessage (&msg, NULL, 0, 0))
     59      {
     60           TranslateMessage (&msg) ;
     61           DispatchMessage (&msg) ;
     62      }
     63      return msg.wParam ;
     64 }
     65 
     66 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
     67 {
     68      static HWND hwndChild[DIVISIONS][DIVISIONS] ;
     69      int         cxBlock, cyBlock, x, y ;
     70      
     71      switch (message)
     72      {
     73      case WM_CREATE :
     74           for (x = 0 ; x < DIVISIONS ; x++)
     75                for (y = 0 ; y < DIVISIONS ; y++)
     76                     hwndChild[x][y] = CreateWindow (szChildClass, NULL,
     77                               WS_CHILDWINDOW | WS_VISIBLE,
     78                               0, 0, 0, 0,
     79                               hwnd, (HMENU) (y << 8 | x),
     80                               (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE),
     81                               NULL) ;
     82           return 0 ;
     83                
     84      case WM_SIZE :
     85           cxBlock = LOWORD (lParam) / DIVISIONS ;
     86           cyBlock = HIWORD (lParam) / DIVISIONS ;
     87           
     88           for (x = 0 ; x < DIVISIONS ; x++)
     89                 for (y = 0 ; y < DIVISIONS ; y++)
     90                     MoveWindow (hwndChild[x][y],
     91                                 x * cxBlock, y * cyBlock,
     92                                 cxBlock, cyBlock, TRUE) ;
     93           return 0 ;
     94                        
     95      case WM_LBUTTONDOWN :
     96           MessageBeep (0) ;
     97           return 0 ;
     98 
     99           // On set-focus message, set focus to child window
    100 
    101      case WM_SETFOCUS:
    102           SetFocus (GetDlgItem (hwnd, idFocus)) ;
    103           return 0 ;
    104 
    105           // On key-down message, possibly change the focus window
    106 
    107      case WM_KEYDOWN:
    108           x = idFocus & 0xFF ;
    109           y = idFocus >> 8 ;
    110 
    111           switch (wParam)
    112           {
    113           case VK_UP:    y-- ;                    break ;
    114           case VK_DOWN:  y++ ;                    break ;
    115           case VK_LEFT:  x-- ;                    break ;
    116           case VK_RIGHT: x++ ;                    break ;
    117           case VK_HOME:  x = y = 0 ;              break ;
    118           case VK_END:   x = y = DIVISIONS - 1 ;  break ;
    119           default:       return 0 ;
    120           }
    121 
    122           x = (x + DIVISIONS) % DIVISIONS ;
    123           y = (y + DIVISIONS) % DIVISIONS ;
    124 
    125           idFocus = y << 8 | x ;
    126 
    127           SetFocus (GetDlgItem (hwnd, idFocus)) ;
    128           return 0 ;
    129 
    130      case WM_DESTROY :
    131           PostQuitMessage (0) ;
    132           return 0 ;
    133      }
    134      return DefWindowProc (hwnd, message, wParam, lParam) ;
    135 }
    136 
    137 LRESULT CALLBACK ChildWndProc (HWND hwnd, UINT message, 
    138                                WPARAM wParam, LPARAM lParam)
    139 {
    140      HDC         hdc ;
    141      PAINTSTRUCT ps ;
    142      RECT        rect ;
    143      
    144      switch (message)
    145      {
    146      case WM_CREATE :
    147           SetWindowLong (hwnd, 0, 0) ;       // on/off flag
    148           return 0 ;
    149 
    150      case WM_KEYDOWN:
    151                // Send most key presses to the parent window
    152           
    153           if (wParam != VK_RETURN && wParam != VK_SPACE)
    154           {
    155                SendMessage (GetParent (hwnd), message, wParam, lParam) ;
    156                return 0 ;
    157           }
    158                // For Return and Space, fall through to toggle the square
    159           
    160      case WM_LBUTTONDOWN :
    161           SetWindowLong (hwnd, 0, 1 ^ GetWindowLong (hwnd, 0)) ;
    162           SetFocus (hwnd) ;
    163           InvalidateRect (hwnd, NULL, FALSE) ;
    164           return 0 ;
    165 
    166                // For focus messages, invalidate the window for repaint
    167           
    168      case WM_SETFOCUS:
    169           idFocus = GetWindowLong (hwnd, GWL_ID) ;
    170 
    171                // Fall through
    172 
    173      case WM_KILLFOCUS:
    174           InvalidateRect (hwnd, NULL, TRUE) ;
    175           return 0 ;
    176           
    177      case WM_PAINT :
    178           hdc = BeginPaint (hwnd, &ps) ;
    179           
    180           GetClientRect (hwnd, &rect) ;
    181           Rectangle (hdc, 0, 0, rect.right, rect.bottom) ;
    182 
    183                // Draw the "x" mark
    184           
    185           if (GetWindowLong (hwnd, 0))
    186           {
    187                MoveToEx (hdc, 0,          0, NULL) ;
    188                LineTo   (hdc, rect.right, rect.bottom) ;
    189                MoveToEx (hdc, 0,          rect.bottom, NULL) ;
    190                LineTo   (hdc, rect.right, 0) ;
    191           }
    192 
    193                // Draw the "focus" rectangle
    194           
    195           if (hwnd == GetFocus ())
    196           {
    197                rect.left   += rect.right / 10 ;
    198                rect.right  -= rect.left ;
    199                rect.top    += rect.bottom / 10 ;
    200                rect.bottom -= rect.top ;
    201 
    202                SelectObject (hdc, GetStockObject (NULL_BRUSH)) ;
    203                SelectObject (hdc, CreatePen (PS_DASH, 0, 0)) ;
    204                Rectangle (hdc, rect.left, rect.top, rect.right, rect.bottom) ;
    205                DeleteObject(SelectObject (hdc, GetStockObject (BLACK_PEN))) ;
    206           }
    207 
    208           EndPaint (hwnd, &ps) ;
    209           return 0 ;
    210      }
    211      return DefWindowProc (hwnd, message, wParam, lParam) ;
    212 }
     
  • 相关阅读:
    常用的排序算法的时间复杂度和空间复杂度
    VMWare虚拟机设置固定IP上网方法
    哈希表的冲突处理方法
    lua ipairs和pairs的区别 .
    NP完全问题
    java+selenium+new——文本框的输入、清空——按钮的单击
    java+selenium+new——操作单选按钮——使用list容器进行遍历
    java+selenium+new——对某个元素进行双击(举例示例操作)
    java+selenium+new——操作单选下拉列表——打印每一个选项——3种方法选中某一个选项——select类
    java+selenium+new——对当前浏览器窗口进行截屏,保存到指定文件夹,并取名
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3263480.html
Copyright © 2011-2022 走看看