1、windows程序设计作业Windows 程序设计 院系:计算机科学与技术年级:09级学号: 姓名:一滚动显示文本的程序/*- SYSMETS2.C - System Metrics Display Program No. 2 (c) Charles Petzold, 1998 -*/#define WINVER 0x0500#include #include sysmets.h#define ID_TIMER 1LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInsta
2、nce, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) static TCHAR szAppName = TEXT (SysMets2) ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInsta
3、nce ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass) MessageBox (NULL, TEXT (This
4、 program requires Windows NT!), szAppName, MB_ICONERROR) ; return 0 ; hwnd = CreateWindow (szAppName, TEXT (Get System Metrics No. 2), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; w
5、hile (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ; DispatchMessage (&msg) ; return msg.wParam ;LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) static int cxChar, cxCaps, cyChar, cyClient, iVscrollPos ; HDC hdc ; int i, y ; / char *p = &(char)i; PAINTSTRUCT
6、 ps ; TCHAR szBuffer25; TCHAR szBuffer10 ; TEXTMETRIC tm ; switch (message) case WM_CREATE: hdc = GetDC (hwnd) ; SetTimer (hwnd, ID_TIMER, 300, NULL) ;/ GetTextMetrics (hdc, &tm) ; cxChar = tm.tmAveCharWidth ; cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ; cyChar = tm.tmHeight + tm.tmExte
7、rnalLeading ; ReleaseDC (hwnd, hdc); return 0 ; case WM_SIZE: cyClient = HIWORD (lParam) ; return 0 ; /* case WM_VSCROLL: switch (LOWORD (wParam) case SB_LINEUP: iVscrollPos -= 1 ; break ; case SB_LINEDOWN: iVscrollPos += 1 ; break ; case SB_PAGEUP: iVscrollPos -= cyClient / cyChar ; break ; case SB
8、_PAGEDOWN: iVscrollPos += cyClient / cyChar ; break ; case SB_THUMBPOSITION: iVscrollPos = HIWORD (wParam) ; break ; default : break ; */ / iVscrollPos = max (0, min (iVscrollPos, NUMLINES - 1) ; case WM_TIMER : iVscrollPos +=1; if(iVscrollPos = NUMLINES) iVscrollPos = 0; Sleep(1000); InvalidateRect
9、 (hwnd, NULL, TRUE) ; return 0 ; /*if (iVscrollPos != GetScrollPos (hwnd, SB_VERT) SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE) ; InvalidateRect (hwnd, NULL, TRUE) ; return 0 ;*/ case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; for (i = 0 ; i NUMLINES ; i+) y = cyChar * (i - iVscrollPos) ; TextOut (
10、hdc, 0, y,szBuffer2, wsprintf(szBuffer2,TEXT(%5d), i+1); TextOut (hdc, 80, y, sysmetricsi.szLabel, lstrlen (sysmetricsi.szLabel) ; TextOut (hdc, 32 * cxCaps, y, sysmetricsi.szDesc, lstrlen (sysmetricsi.szDesc) ; SetTextAlign (hdc, TA_RIGHT | TA_TOP) ; TextOut (hdc, 32 * cxCaps + 50 * cxChar, y, szBu
11、ffer, wsprintf (szBuffer, TEXT (%5d), GetSystemMetrics (sysmetricsi.iIndex) ; SetTextAlign (hdc, TA_LEFT | TA_TOP) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: KillTimer (hwnd, ID_TIMER) ; PostQuitMessage (0) ; return 0 ; return DefWindowProc (hwnd, message, wParam, lParam) ;/*- SYSMETS2.C -
12、 System Metrics Display Program No. 2 (c) Charles Petzold, 1998 -*/#define WINVER 0x0500#include #include sysmets.h#define ID_TIMER 1LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) static TCHAR szA
13、ppName = TEXT (SysMets2) ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor =
14、 LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass) MessageBox (NULL, TEXT (This program requires Windows NT!), szAppName, MB_ICONERROR) ; return 0 ; hwnd =
15、 CreateWindow (szAppName, TEXT (Get System Metrics No. 2), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ; DispatchMessag
16、e (&msg) ; return msg.wParam ;LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) static int cxChar, cxCaps, cyChar, cyClient, iVscrollPos ; HDC hdc ; int i, y ; / char *p = &(char)i; PAINTSTRUCT ps ; TCHAR szBuffer25; TCHAR szBuffer10 ; TEXTMETRIC tm ; switch (message)
17、case WM_CREATE: hdc = GetDC (hwnd) ; SetTimer (hwnd, ID_TIMER, 300, NULL) ;/ GetTextMetrics (hdc, &tm) ; cxChar = tm.tmAveCharWidth ; cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ; cyChar = tm.tmHeight + tm.tmExternalLeading ; ReleaseDC (hwnd, hdc); return 0 ; case WM_SIZE: cyClient = HIW
18、ORD (lParam) ; return 0 ; /* case WM_VSCROLL: switch (LOWORD (wParam) case SB_LINEUP: iVscrollPos -= 1 ; break ; case SB_LINEDOWN: iVscrollPos += 1 ; break ; case SB_PAGEUP: iVscrollPos -= cyClient / cyChar ; break ; case SB_PAGEDOWN: iVscrollPos += cyClient / cyChar ; break ; case SB_THUMBPOSITION:
19、 iVscrollPos = HIWORD (wParam) ; break ; default : break ; */ / iVscrollPos = max (0, min (iVscrollPos, NUMLINES - 1) ; case WM_TIMER : iVscrollPos +=1; if(iVscrollPos = NUMLINES) iVscrollPos = 0; Sleep(1000); InvalidateRect (hwnd, NULL, TRUE) ; return 0 ; /*if (iVscrollPos != GetScrollPos (hwnd, SB
20、_VERT) SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE) ; InvalidateRect (hwnd, NULL, TRUE) ; return 0 ;*/ case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; for (i = 0 ; i hInstance; for(i=0;i8;i+) hBitmapi=LoadBitmap(hInstance,TEXT(picnamei.c_str(); return 0; case WM_SIZE: Grid.left=SHADOW+BORDER; Grid.top=INFO+2*BORDER+SHADOW*3; Grid.bottom=Grid.top+ROW*YSIZE+2*SHADOW; Grid.right=Grid.left+COL*XSIZE+2*SHADOW; rect_info.left=Grid.left; rect_info.top=2*SHADOW+BORDER; rect_info.right=Grid.right; rect_info.bottom=rect_info.top+INFO; rect_num.left=re
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1