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

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 閱讀(347) 評論(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>
            欧美日韩另类字幕中文| 欧美成人精品影院| 亚洲激情成人在线| 一区视频在线看| 亚洲大胆人体在线| 亚洲精品视频在线播放| 最新国产成人在线观看| 一区二区三区高清视频在线观看| 亚洲九九精品| 午夜精彩视频在线观看不卡| 久久成人一区| 欧美激情1区2区3区| 亚洲激情影视| 亚洲老司机av| 欧美在线啊v| 欧美激情精品久久久久久大尺度| 欧美日韩中文精品| 国产日韩在线视频| 亚洲精品九九| 欧美亚洲色图校园春色| 久久偷窥视频| 欧美激情小视频| 在线亚洲成人| 久久精品一本| 久热精品在线视频| 欧美激情精品久久久六区热门 | 伊人色综合久久天天| 欧美中文字幕久久| 国产日韩精品一区观看| 国产日本欧美在线观看| 国产综合色精品一区二区三区| 国产一二精品视频| 亚洲精品在线看| 亚洲一区免费网站| 欧美专区亚洲专区| 欧美成人精品h版在线观看| 亚洲激情第一区| 亚洲综合激情| 久热精品视频在线观看一区| 亚洲欧美精品一区| 日韩午夜电影av| 欧美电影在线播放| 亚洲第一在线综合网站| 久久米奇亚洲| 久久综合福利| 蜜桃久久av一区| 亚洲国产精品视频一区| 欧美激情1区| 欧美 日韩 国产一区二区在线视频| 久久久欧美一区二区| 久久久久久电影| 欧美成人一区二区三区| 亚洲激情一区| 亚洲美女免费视频| 久久国产天堂福利天堂| 欧美久久影院| 很黄很黄激情成人| 亚洲婷婷国产精品电影人久久| 亚洲网站在线观看| 欧美激情国产日韩精品一区18| 亚洲欧美一级二级三级| 欧美精品一区三区| 狠狠综合久久av一区二区小说| 亚洲欧美国产不卡| 亚洲精品久久久久久一区二区| 久久成人精品电影| 国产伦精品一区二区三| 亚洲一区二区综合| 亚洲日本激情| 蜜臀99久久精品久久久久久软件| 国产精品一二三| 一区二区欧美视频| 亚洲国产精品va| 老色批av在线精品| 精品动漫一区二区| 一本色道久久综合亚洲精品按摩| 久久亚洲午夜电影| 欧美一区二区三区播放老司机| 久久久最新网址| 美女精品一区| 久久综合色88| 亚洲国产精品精华液2区45| 久久综合给合| 久久久国产精品一区| 在线视频免费在线观看一区二区| 欧美承认网站| 嫩草影视亚洲| 亚洲国产高清在线观看视频| 麻豆乱码国产一区二区三区| 久久久久网站| 在线欧美福利| 亚洲国产高清自拍| 毛片精品免费在线观看| 国产麻豆精品视频| 99re6这里只有精品视频在线观看| 亚洲美女在线国产| 久久免费视频观看| 久久青青草综合| 亚洲国产专区| 99精品国产一区二区青青牛奶| 欧美日韩国产美| 小嫩嫩精品导航| 欧美在线视频观看| 亚洲国产毛片完整版 | 亚洲欧美日韩精品| 亚洲性xxxx| 国内精品亚洲| 亚洲国产女人aaa毛片在线| 欧美—级a级欧美特级ar全黄| 亚洲天堂av图片| 午夜精品偷拍| 最新成人av在线| 亚洲免费播放| 国产在线不卡| 亚洲精品美女在线观看| 国产精品久久久久久久久久直播| 性欧美videos另类喷潮| 久久噜噜亚洲综合| 亚洲一区中文字幕在线观看| 最新日韩欧美| 欧美大片免费观看| 亚洲精品久久视频| 亚洲你懂的在线视频| 亚洲国产精品精华液2区45| 一区二区三区四区蜜桃| 在线播放国产一区中文字幕剧情欧美| 最新成人av在线| 国产欧美精品日韩精品| 亚洲国产三级| 国产一区在线观看视频| 亚洲伦理久久| 伊人久久久大香线蕉综合直播| 99精品视频免费在线观看| 狠狠色综合色区| 亚洲午夜久久久久久久久电影网| 1024亚洲| 欧美一级在线播放| 亚洲一区三区在线观看| 欧美电影在线观看| 久久午夜视频| 欧美午夜宅男影院在线观看| 欧美福利视频| 一区视频在线播放| 亚洲精品国产精品乱码不99按摩 | 国产精品igao视频网网址不卡日韩| 久久中文精品| 国产偷久久久精品专区| 宅男66日本亚洲欧美视频| 亚洲日本aⅴ片在线观看香蕉| 午夜国产欧美理论在线播放| 99国产精品私拍| 欧美激情一区二区三区在线视频观看| 久久综合久久88| 国产一区二区视频在线观看| 亚洲男人av电影| 欧美诱惑福利视频| 欧美视频在线不卡| 亚洲美女av黄| 亚洲一级黄色av| 国产精品久久一区主播| 亚洲午夜女主播在线直播| 亚洲图片欧洲图片av| 免费观看日韩| 午夜欧美理论片| 亚洲激情视频在线观看| 久久中文久久字幕| 欧美电影打屁股sp| 亚洲区免费影片| 欧美激情影院| 一本色道久久88精品综合| 亚洲图片在区色| 国产精品夫妻自拍| 亚洲影视在线| 欧美一区激情| 影音先锋久久| 欧美大片免费看| 亚洲精品色图| 国产性天天综合网| 久久久综合香蕉尹人综合网| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲乱码国产乱码精品精 | 乱人伦精品视频在线观看| 精品成人一区二区三区| 老司机免费视频久久| 亚洲欧洲日产国产综合网| 亚洲一区二区欧美日韩| 国产精品亚发布| 久久影院午夜片一区| 亚洲欧洲日本mm| 香蕉久久夜色精品国产使用方法| 国产精品自拍网站| 久久成人久久爱| 最新成人av在线| 欧美一区二区视频97| 1769国产精品| 欧美三级在线视频| 亚洲在线免费视频| 欧美专区在线播放| 亚洲天堂成人在线视频| 亚洲国产精品精华液2区45|