&與&& C語言

來源:互聯網
上載者:User

標籤:setw   運算   let   ==   icon   sizeof   client   top   result   

&是一個位元運算符,就是將兩個二進位的數逐位相與,就是都是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 window100 101      case WM_SETFOCUS:102           SetFocus (GetDlgItem (hwnd, idFocus)) ;103           return 0 ;104 105           // On key-down message, possibly change the focus window106 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 flag148           return 0 ;149 150      case WM_KEYDOWN:151                // Send most key presses to the parent window152           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 square159           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 repaint167           168      case WM_SETFOCUS:169           idFocus = GetWindowLong (hwnd, GWL_ID) ;170 171                // Fall through172 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" mark184           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" rectangle194           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 window100 101      case WM_SETFOCUS:102           SetFocus (GetDlgItem (hwnd, idFocus)) ;103           return 0 ;104 105           // On key-down message, possibly change the focus window106 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 flag148           return 0 ;149 150      case WM_KEYDOWN:151                // Send most key presses to the parent window152           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 square159           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 repaint167           168      case WM_SETFOCUS:169           idFocus = GetWindowLong (hwnd, GWL_ID) ;170 171                // Fall through172 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" mark184           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" rectangle194           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 }

 

 

&與&& C語言

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.