青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

Windows Quiz 2

時間倉促,草草完成1234,沒有完成5,因為設計方案不好。


  1 /*---------------------------------------------
  2 OWNDRAW.C -- Owner-Draw Button Demo Program
  3 (c) Charles Petzold, 1998
  4 ---------------------------------------------*/
  5 /*
  6 修改為:QuizZJ.cpp
  7 修改者:趙杰
  8 */
  9 
 10 #include <windows.h>
 11 
 12 #define ID_SMALLER      1
 13 #define ID_LARGER       2
 14 
 15 #define BTN_WIDTH        (8 * cxChar)
 16 #define BTN_HEIGHT       (4 * cyChar)
 17 
 18 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
 19 
 20 HINSTANCE hInst ;
 21 
 22 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
 23         PSTR szCmdLine, int iCmdShow)
 24 {
 25         static TCHAR szAppName[] = TEXT ("QuizZJ") ;
 26         MSG          msg ;
 27         HWND         hwnd ;
 28         WNDCLASS     wndclass ;
 29 
 30         hInst = hInstance ;
 31 
 32         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
 33         wndclass.lpfnWndProc   = WndProc ;
 34         wndclass.cbClsExtra    = 0 ;
 35         wndclass.cbWndExtra    = 0 ;
 36         wndclass.hInstance     = hInstance ;
 37         wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
 38         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
 39         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
 40         wndclass.lpszMenuName  = NULL ;
 41         wndclass.lpszClassName = szAppName ;
 42 
 43         if (!RegisterClass (&wndclass))
 44         {
 45                 MessageBox (NULL, TEXT ("This program requires Windows NT!"),
 46                         szAppName, MB_ICONERROR) ;
 47                 return 0 ;
 48         }
 49 
 50         hwnd = CreateWindow (szAppName, TEXT ("Quiz 2"),
 51                 WS_OVERLAPPEDWINDOW,
 52                 CW_USEDEFAULT, CW_USEDEFAULT,
 53                 CW_USEDEFAULT, CW_USEDEFAULT,
 54                 NULL, NULL, hInstance, NULL) ;
 55 
 56         ShowWindow (hwnd, iCmdShow) ;
 57         UpdateWindow (hwnd) ; 
 58 
 59         while (GetMessage (&msg, NULL, 00))
 60         {
 61                 TranslateMessage (&msg) ;
 62                 DispatchMessage (&msg) ;
 63         }
 64         return msg.wParam ;
 65 }
 66 
 67 void Triangle (HDC hdc, POINT pt[])
 68 {
 69         SelectObject (hdc, GetStockObject (BLACK_BRUSH)) ;
 70         Polygon (hdc, pt, 3) ;
 71         SelectObject (hdc, GetStockObject (WHITE_BRUSH)) ;
 72 }
 73 
 74 WNDPROC  BtnWndProcPrev;
 75 
 76 LRESULT CALLBACK BtnWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
 77         switch ( uMsg ) {
 78         case WM_KEYDOWN : 
 79         case WM_KEYUP : 
 80         case WM_CHAR : 
 81                 switch ( wParam ) {
 82                 case VK_F1 : 
 83                 case VK_TAB : 
 84                 case TEXT('R') : 
 85                 case TEXT('B') : 
 86                 case TEXT('G') : 
 87                         ::SendMessage( ::GetParent( hWnd ), uMsg, wParam, lParam );
 88                         return 0;
 89                 case TEXT('E') : 
 90                 case VK_RETURN : 
 91                         wParam = VK_SPACE;
 92                 }
 93                 break;
 94         }
 95         return ::CallWindowProc( BtnWndProcPrev, hWnd, uMsg, wParam, lParam );
 96 }
 97 
 98 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 99 {
100         static HWND      hwndSmaller, hwndLarger ;
101         static int       cxClient, cyClient, cxChar, cyChar ;
102         static BOOL      bFirstFocus = TRUE;
103         static HBRUSH    hbrBack;
104         int              cx, cy ;
105         LPDRAWITEMSTRUCT pdis ;
106         POINT            pt[3] ;
107         RECT             rc ;
108 
109         switch (message)
110         {
111         case WM_CREATE :
112                 hbrBack = ::CreateSolidBrush( RGB(255,255,255) );
113                 ::SetClassLong( hwnd, GCL_HBRBACKGROUND, (LONG)hbrBack );
114 
115                 cxChar = LOWORD (GetDialogBaseUnits ()) ;
116                 cyChar = HIWORD (GetDialogBaseUnits ()) ;
117 
118                 // Create the owner-draw pushbuttons
119 
120                 hwndSmaller = CreateWindow (TEXT ("button"), TEXT (""),
121                         WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
122                         00, BTN_WIDTH, BTN_HEIGHT,
123                         hwnd, (HMENU) ID_SMALLER, hInst, NULL) ;
124 
125                 hwndLarger  = CreateWindow (TEXT ("button"), TEXT (""),
126                         WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
127                         00, BTN_WIDTH, BTN_HEIGHT,
128                         hwnd, (HMENU) ID_LARGER, hInst, NULL) ;
129                 BtnWndProcPrev = (WNDPROC)::GetWindowLong( hwndSmaller, GWL_WNDPROC );
130                 ::SetWindowLong( hwndSmaller, GWL_WNDPROC, (LONG)BtnWndProc );
131                 ::SetWindowLong( hwndLarger, GWL_WNDPROC, (LONG)BtnWndProc );
132                 return 0 ;
133 
134         case WM_SIZE :
135                 cxClient = LOWORD (lParam) ;
136                 cyClient = HIWORD (lParam) ;
137 
138                 // Move the buttons to the new center
139 
140                 MoveWindow (hwndSmaller, cxClient / 2 - 3 * BTN_WIDTH  / 2,
141                         cyClient / 2 -     BTN_HEIGHT / 2,
142                         BTN_WIDTH, BTN_HEIGHT, TRUE) ;
143 
144                 MoveWindow (hwndLarger,  cxClient / 2 +     BTN_WIDTH  / 2,
145                         cyClient / 2 -     BTN_HEIGHT / 2,
146                         BTN_WIDTH, BTN_HEIGHT, TRUE) ;
147                 return 0 ;
148 
149         case WM_LBUTTONUP : 
150                 hbrBack = ::CreateSolidBrush( RGB(255,255,255) );
151                 ::SetClassLong( hwnd, GCL_HBRBACKGROUND, (LONG)hbrBack );
152                 ::InvalidateRect( hwnd, NULL, TRUE );
153                 return 0;
154 
155         case WM_SETFOCUS : 
156                 ::SetFocus( bFirstFocus ? hwndSmaller : hwndLarger );
157                 return 0;
158 
159         case WM_KEYDOWN : 
160                 // case WM_CHAR : 
161                 // case WM_KEYUP : 
162                 switch ( wParam ) {
163                 case VK_TAB : 
164                         bFirstFocus = ! bFirstFocus;
165                         ::SetFocus( bFirstFocus ? hwndSmaller : hwndLarger );
166                         return 0;
167                 case VK_F1 : 
168                         MessageBox( hwnd, TEXT("作者:趙杰\n學號:10092130243"), TEXT("作者信息"), MB_OK );
169                         return 0;
170                 case TEXT('R') : 
171                         if ( (::GetKeyState(VK_RCONTROL)<0)||(::GetKeyState(VK_LCONTROL)<0) ) {
172                                 hbrBack = ::CreateSolidBrush( RGB(255,0,0) );
173                                 ::SetClassLong( hwnd, GCL_HBRBACKGROUND, (LONG)hbrBack );
174                                 ::InvalidateRect( hwnd, NULL, TRUE );
175                         }
176                         return 0;
177                 case TEXT('G') : 
178                         if ( (::GetKeyState(VK_RCONTROL)<0)||(::GetKeyState(VK_LCONTROL)<0) ) {
179                                 hbrBack = ::CreateSolidBrush( RGB(0,255,0) );
180                                 ::SetClassLong( hwnd, GCL_HBRBACKGROUND, (LONG)hbrBack );
181                                 ::InvalidateRect( hwnd, NULL, TRUE );
182                         }
183                         return 0;
184                 case TEXT('B') : 
185                         if ( (::GetKeyState(VK_RCONTROL)<0)||(::GetKeyState(VK_LCONTROL)<0) ) {
186                                 hbrBack = ::CreateSolidBrush( RGB(0,0,255) );
187                                 ::SetClassLong( hwnd, GCL_HBRBACKGROUND, (LONG)hbrBack );
188                                 ::InvalidateRect( hwnd, NULL, TRUE );
189                         }
190                         return 0;
191                 }
192                 return 0;
193 
194         case WM_COMMAND :
195                 GetWindowRect (hwnd, &rc) ;
196 
197                 // Make the window 10% smaller or larger
198 
199                 switch (wParam)
200                 {
201                 case ID_SMALLER :
202                         rc.left   += cxClient / 20 ;
203                         rc.right  -= cxClient / 20 ;
204                         rc.top    += cyClient / 20 ;
205                         rc.bottom -= cyClient / 20 ;
206                         break ;
207 
208                 case ID_LARGER :
209                         rc.left   -= cxClient / 20 ;
210                         rc.right  += cxClient / 20 ;
211                         rc.top    -= cyClient / 20 ;
212                         rc.bottom += cyClient / 20 ;
213                         break ;
214                 }
215 
216                 MoveWindow (hwnd, rc.left, rc.top, rc.right  - rc.left,
217                         rc.bottom - rc.top, TRUE) ;
218                 return 0 ;
219 
220         case WM_DRAWITEM :
221                 pdis = (LPDRAWITEMSTRUCT) lParam ;
222 
223                 // Fill area with white and frame it black
224 
225                 FillRect (pdis->hDC, &pdis->rcItem,
226                         (HBRUSH) GetStockObject (WHITE_BRUSH)) ;
227 
228                 FrameRect (pdis->hDC, &pdis->rcItem,
229                         (HBRUSH) GetStockObject (BLACK_BRUSH)) ;
230 
231                 // Draw inward and outward black triangles
232 
233                 cx = pdis->rcItem.right  - pdis->rcItem.left ;
234                 cy = pdis->rcItem.bottom - pdis->rcItem.top  ;
235 
236                 switch (pdis->CtlID)
237                 {
238                 case ID_SMALLER :
239                         pt[0].x = 3 * cx / 8 ;  pt[0].y = 1 * cy / 8 ;
240                         pt[1].x = 5 * cx / 8 ;  pt[1].y = 1 * cy / 8 ;
241                         pt[2].x = 4 * cx / 8 ;  pt[2].y = 3 * cy / 8 ;
242 
243                         Triangle (pdis->hDC, pt) ;
244 
245                         pt[0].x = 7 * cx / 8 ;  pt[0].y = 3 * cy / 8 ;
246                         pt[1].x = 7 * cx / 8 ;  pt[1].y = 5 * cy / 8 ;
247                         pt[2].x = 5 * cx / 8 ;  pt[2].y = 4 * cy / 8 ;
248 
249                         Triangle (pdis->hDC, pt) ;
250 
251                         pt[0].x = 5 * cx / 8 ;  pt[0].y = 7 * cy / 8 ;
252                         pt[1].x = 3 * cx / 8 ;  pt[1].y = 7 * cy / 8 ;
253                         pt[2].x = 4 * cx / 8 ;  pt[2].y = 5 * cy / 8 ;
254 
255                         Triangle (pdis->hDC, pt) ;
256 
257                         pt[0].x = 1 * cx / 8 ;  pt[0].y = 5 * cy / 8 ;
258                         pt[1].x = 1 * cx / 8 ;  pt[1].y = 3 * cy / 8 ;
259                         pt[2].x = 3 * cx / 8 ;  pt[2].y = 4 * cy / 8 ;
260 
261                         Triangle (pdis->hDC, pt) ;
262                         break ;
263 
264                 case ID_LARGER :
265                         pt[0].x = 5 * cx / 8 ;  pt[0].y = 3 * cy / 8 ;
266                         pt[1].x = 3 * cx / 8 ;  pt[1].y = 3 * cy / 8 ;
267                         pt[2].x = 4 * cx / 8 ;  pt[2].y = 1 * cy / 8 ;
268 
269                         Triangle (pdis->hDC, pt) ;
270 
271                         pt[0].x = 5 * cx / 8 ;  pt[0].y = 5 * cy / 8 ;
272                         pt[1].x = 5 * cx / 8 ;  pt[1].y = 3 * cy / 8 ;
273                         pt[2].x = 7 * cx / 8 ;  pt[2].y = 4 * cy / 8 ;
274 
275                         Triangle (pdis->hDC, pt) ;
276 
277                         pt[0].x = 3 * cx / 8 ;  pt[0].y = 5 * cy / 8 ;
278                         pt[1].x = 5 * cx / 8 ;  pt[1].y = 5 * cy / 8 ;
279                         pt[2].x = 4 * cx / 8 ;  pt[2].y = 7 * cy / 8 ;
280 
281                         Triangle (pdis->hDC, pt) ;
282 
283                         pt[0].x = 3 * cx / 8 ;  pt[0].y = 3 * cy / 8 ;
284                         pt[1].x = 3 * cx / 8 ;  pt[1].y = 5 * cy / 8 ;
285                         pt[2].x = 1 * cx / 8 ;  pt[2].y = 4 * cy / 8 ;
286 
287                         Triangle (pdis->hDC, pt) ;
288                         break ;
289                 }
290 
291                 // Invert the rectangle if the button is selected
292 
293                 if (pdis->itemState & ODS_SELECTED)
294                         InvertRect (pdis->hDC, &pdis->rcItem) ;
295 
296                 // Draw a focus rectangle if the button has the focus
297 
298                 if (pdis->itemState & ODS_FOCUS)
299                 {
300                         pdis->rcItem.left   += cx / 16 ;
301                         pdis->rcItem.top    += cy / 16 ;
302                         pdis->rcItem.right  -= cx / 16 ;
303                         pdis->rcItem.bottom -= cy / 16 ;
304 
305                         DrawFocusRect (pdis->hDC, &pdis->rcItem) ;
306                 }
307                 return 0 ;
308 
309         case WM_DESTROY :
310                 PostQuitMessage (0) ;
311                 return 0 ;
312         }
313         return DefWindowProc (hwnd, message, wParam, lParam) ;
314 }
315 

posted on 2011-05-31 16:25 coreBugZJ 閱讀(345) 評論(0)  編輯 收藏 引用 所屬分類: 課內作業

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久成人网| 欧美护士18xxxxhd| 狠狠色综合日日| 国产精品私人影院| 国产精品欧美一区二区三区奶水| 欧美精品综合| 欧美日韩天天操| 欧美午夜在线视频| 国产午夜久久久久| 在线色欧美三级视频| 亚洲黄色小视频| 亚洲精品日韩综合观看成人91| 亚洲精品三级| 夜夜爽av福利精品导航| 日韩一区二区久久| 亚洲午夜免费福利视频| 欧美在线综合| 欧美国产亚洲精品久久久8v| 亚洲精品免费看| 亚洲精品综合久久中文字幕| 一区二区欧美精品| 久久久久久久网站| 欧美日韩国产综合一区二区| 国产日韩欧美高清免费| 亚洲国产欧美一区| 亚洲嫩草精品久久| 欧美aa国产视频| 亚洲免费av片| 久久久中精品2020中文| 欧美日韩国产一级| 黄色一区二区在线观看| 一区二区三区产品免费精品久久75 | 欧美激情综合网| 国产精品网站一区| 亚洲精品乱码久久久久久蜜桃91| 亚洲一区二区三区影院| 久久综合狠狠综合久久激情| 一区二区日韩伦理片| 免费国产自线拍一欧美视频| 国产免费成人| 亚洲一二三区在线| 亚洲国产精品va在看黑人| 香蕉久久a毛片| 国产精品国产三级国产a| 亚洲黄色一区二区三区| 久久久免费精品| 中国亚洲黄色| 欧美日韩国产首页在线观看| 在线看一区二区| 久久视频国产精品免费视频在线| 中文一区二区在线观看| 欧美成人首页| 亚洲欧洲一区二区天堂久久 | 亚洲精品日韩在线观看| 老司机一区二区| 欧美一区成人| 国产欧美日韩三区| 午夜精品福利一区二区三区av| 最新精品在线| 欧美大片在线影院| 91久久精品国产91久久性色| 久久精品国产久精国产一老狼| 欧美精品三级| 在线播放中文一区| 久久人体大胆视频| 久久精品免费播放| 国内精品美女av在线播放| 久久精品人人做人人爽| 亚洲欧美日韩国产一区| 国产精品视频xxx| 欧美一区在线看| 午夜欧美视频| 黄色一区二区三区| 亚洲国产片色| 欧美日韩精品在线播放| 亚洲视频综合| 亚洲综合成人在线| 国产主播一区二区三区| 久久免费黄色| 欧美**人妖| av成人激情| 亚洲一区www| 国产一区二区三区在线观看视频 | 欧美一区二区三区喷汁尤物| 亚洲欧美在线高清| 一区二区自拍| 亚洲国产激情| 国产精品美女久久久久久2018| 欧美亚洲免费高清在线观看| 欧美一区二区免费视频| 亚洲二区视频| 中国成人亚色综合网站| 黄网站色欧美视频| 亚洲日韩成人| 国产日韩精品久久| 欧美国产91| 国产精品久久久久永久免费观看| 久久精品二区三区| 欧美电影免费观看| 性做久久久久久免费观看欧美| 久久国内精品视频| 亚洲私人影吧| 久久全球大尺度高清视频| 一区二区三区久久久| 欧美怡红院视频| 亚洲婷婷在线| 久久久久久9| 亚欧成人在线| 欧美视频福利| 欧美 日韩 国产一区二区在线视频| 欧美日韩国产高清| 欧美不卡在线视频| 国产精品丝袜久久久久久app| 亚洲福利专区| 有坂深雪在线一区| 亚洲无线视频| 99成人在线| 久久人体大胆视频| 欧美在线免费看| 国产精品s色| 欧美大胆成人| 韩国三级电影久久久久久| 在线中文字幕一区| 99av国产精品欲麻豆| 欧美国产日韩二区| 欧美性感一类影片在线播放| 午夜在线精品偷拍| 欧美日本一区| 欧美www在线| 国产日产亚洲精品| 99日韩精品| 亚洲精品在线三区| 久久亚洲一区二区| 久久久久久97三级| 国产精品影音先锋| 亚洲午夜一区| 亚洲愉拍自拍另类高清精品| 欧美黄色视屏| 亚洲第一页在线| 亚洲日本中文字幕区| 欧美va天堂在线| 欧美黄色片免费观看| 91久久精品国产91久久性色| 美日韩丰满少妇在线观看| 牛夜精品久久久久久久99黑人| 国产综合色产| 久久影院午夜论| 欧美激情久久久久久| 亚洲美女少妇无套啪啪呻吟| 欧美激情国产日韩精品一区18| 亚洲黄色在线看| 亚洲视频一区二区| 国产欧美婷婷中文| 久久激情网站| 亚洲大胆视频| 亚洲视频1区| 国产精品久久久99| 亚洲综合日韩中文字幕v在线| 欧美一区在线看| 永久域名在线精品| 欧美岛国在线观看| 亚洲午夜在线| 噜噜噜91成人网| 亚洲美女视频| 国产伦精品一区二区三区照片91 | 毛片精品免费在线观看| 亚洲二区精品| 亚洲综合色婷婷| 国产在线欧美| 欧美日韩国产小视频| 午夜精品亚洲一区二区三区嫩草| 鲁大师成人一区二区三区| av不卡免费看| 禁久久精品乱码| 欧美特黄a级高清免费大片a级| 欧美亚洲午夜视频在线观看| 欧美国产日韩在线观看| 亚洲欧美激情一区二区| 好吊一区二区三区| 欧美日韩一区在线| 久久久人成影片一区二区三区| 99伊人成综合| 久久女同互慰一区二区三区| 亚洲精品五月天| 国产日韩一区二区| 欧美成人午夜影院| 欧美在线视频免费播放| 9l国产精品久久久久麻豆| 亚洲国产成人精品女人久久久 | 亚洲国产91色在线| 香蕉乱码成人久久天堂爱免费| 亚洲电影观看| 国产深夜精品福利| 欧美精品videossex性护士| 欧美亚洲综合在线| 一区二区三区四区蜜桃| 亚洲国产精品高清久久久| 久久久国产一区二区| 亚洲免费视频网站| 一本综合久久|