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

coreBugZJ

此 blog 已棄。

Hello 顯示進程——Windows編程上機作業之一

作業要求在窗口中分兩列顯示進程,我額外增加了 定時更新進程列表,垂直滾動條,鼠標滾輪。。。


代碼:

Hello.h
 1//***************************************************************************************
 2//***************************************************************************************
 3
 4// Prototype for Window Function
 5LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);
 6
 7// Prototypes of functions called by WinMain 
 8BOOL InitApplication(HINSTANCE);
 9BOOL InitInstance(HINSTANCE,int);
10
11//***************************************************************************************
12//***************************************************************************************
13


Hello.cpp
  1#include <windows.h>
  2#include "hello.h"    // 自定義頭文件
  3#include <tlhelp32.h>
  4
  5//***************************************************************************************
  6
  7int WINAPI WinMain(HINSTANCE hInstance,                  // 入口函數
  8        HINSTANCE,
  9        LPSTR           lpCmdLine,
 10        int                   nCmdShow )
 11{
 12        if (!InitApplication(hInstance))       // 應用初始化
 13                return FALSE;
 14
 15        if (!InitInstance(hInstance,nCmdShow)) // 實例初始化
 16                return FALSE;
 17
 18        MSG msg;
 19        while (GetMessage(&msg, NULL, 00))   // 消息循環
 20        {
 21                TranslateMessage(&msg);
 22                DispatchMessage(&msg);
 23        }

 24
 25        return (int)msg.wParam;
 26}

 27
 28//***************************************************************************************
 29
 30BOOL InitApplication(HINSTANCE hInstance)   // 應用初始化
 31{
 32        WNDCLASS  wc;  // Data structure of the window class
 33
 34        wc.style            = CS_HREDRAW | CS_VREDRAW;
 35        wc.lpfnWndProc      = (WNDPROC)MainWndProc;  // Name of the Window Function 
 36        wc.cbClsExtra       = 0;
 37        wc.cbWndExtra       = 0;
 38        wc.hInstance        = hInstance;
 39        wc.hIcon            = LoadIcon (NULL, IDI_APPLICATION);
 40        wc.hCursor          = LoadCursor(NULL, IDC_ARROW);
 41        wc.hbrBackground    = (HBRUSH)GetStockObject(WHITE_BRUSH);
 42        wc.lpszMenuName     = NULL;
 43        wc.lpszClassName    = TEXT("My1stWClass");  // Name of the window class
 44
 45        return RegisterClass(&wc);
 46}

 47
 48//***************************************************************************************
 49
 50BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)  // 實例初始化
 51{
 52        HWND hWnd = CreateWindow(TEXT("My1stWClass"),     // Name of the window class
 53                TEXT("My First Window"),  // Title of the window
 54                WS_OVERLAPPEDWINDOW | WS_VSCROLL,
 55                CW_USEDEFAULT,
 56                CW_USEDEFAULT,
 57                CW_USEDEFAULT,
 58                CW_USEDEFAULT,
 59                NULL,
 60                NULL,
 61                hInstance,
 62                NULL           );
 63        if (!hWnd) return FALSE;
 64
 65        ShowWindow(hWnd, nCmdShow);
 66        UpdateWindow(hWnd);
 67
 68        return TRUE;
 69}

 70
 71//***************************************************************************************
 72
 73// 窗口過程函數
 74
 75#define  PROCESS_MAX       512
 76#define  PROCESS_NAME_MAX  256
 77
 78LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
 79{
 80        static int cyChar, cyClient, iVscrollPos, iVscrollMax;
 81
 82        static int iProcessNum;
 83        static TCHAR  szProcessName[ PROCESS_MAX ][ PROCESS_NAME_MAX ];
 84        static DWORD  dwProcessId[ PROCESS_MAX ];
 85
 86        switch (message) {
 87
 88        case WM_CREATE : 
 89                {
 90                        TEXTMETRIC tm;
 91                        HDC hdc;
 92
 93                        ::SetTimer( hWnd, 01000, NULL );
 94                        
 95                        hdc = ::GetDC( hWnd );
 96                        ::GetTextMetrics( hdc, &tm );
 97                        cyChar = tm.tmHeight + tm.tmExternalLeading;
 98                        ::ReleaseDC( hWnd, hdc );
 99
100                        ::SendMessage( hWnd, WM_TIMER, 00 );
101                }

102                return 0;
103
104        case WM_SIZE : 
105                cyClient = HIWORD( lParam );
106                return 0;
107
108        case WM_TIMER : 
109                {
110                        PROCESSENTRY32 pe32;
111                        HANDLE  hProcessSnap;
112                        BOOL bMore;
113
114                        pe32.dwSize = sizeof(pe32);
115                        hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
116                        bMore = ::Process32First(hProcessSnap, &pe32);
117                        iProcessNum = 0;
118                        while ( bMore ) {
119                                ::lstrcpy( szProcessName[ iProcessNum ], pe32.szExeFile );
120                                dwProcessId[ iProcessNum++ ] = pe32.th32ProcessID;
121                                bMore = ::Process32Next(hProcessSnap, &pe32);
122                        }

123                        ::CloseHandle(hProcessSnap);
124                        iVscrollMax = ( iProcessNum + 1 ) / 2 * 3 - 1;
125                        if ( iVscrollPos > iVscrollMax ) {
126                               iVscrollPos = iVscrollMax;
127                        }

128                        ::SetScrollRange( hWnd, SB_VERT, 0, iVscrollMax, FALSE );
129                        ::SetScrollPos( hWnd, SB_VERT, iVscrollPos, TRUE );
130                        ::InvalidateRect( hWnd, NULL, TRUE );
131                }

132                return 0;
133
134        case WM_MOUSEWHEEL : 
135                {
136                        short delta = HIWORD( wParam );
137                        if ( delta < 0 ) {
138                                ::SendMessage( hWnd, WM_VSCROLL, SB_LINEDOWN, 0 );
139                        }

140                        if ( delta > 0 ) {
141                                ::SendMessage( hWnd, WM_VSCROLL, SB_LINEUP, 0 );
142                        }

143                }

144                return 0;
145
146        case WM_VSCROLL : 
147                switch ( LOWORD( wParam ) ) {
148                case SB_LINEUP : 
149                        --iVscrollPos;
150                        break;
151                case SB_LINEDOWN : 
152                        ++iVscrollPos;
153                        break;
154                case SB_PAGEUP : 
155                        iVscrollPos -= cyClient / cyChar;
156                        break;
157                case SB_PAGEDOWN : 
158                        iVscrollPos += cyClient / cyChar;
159                        break;
160                case SB_THUMBPOSITION : 
161                        iVscrollPos = HIWORD( wParam );
162                        break;
163                default : 
164                        break;
165                }

166                if ( iVscrollPos > iVscrollMax ) {
167                        iVscrollPos = iVscrollMax;
168                }

169                if ( iVscrollPos < 0 ) {
170                        iVscrollPos = 0;
171                }

172                if ( iVscrollPos != ::GetScrollPos( hWnd, SB_VERT ) ) {
173                        ::SetScrollPos( hWnd, SB_VERT, iVscrollPos, TRUE );
174                        ::InvalidateRect( hWnd, NULL, TRUE );
175                }

176                return 0;
177
178        case WM_PAINT: 
179                {
180                        PAINTSTRUCT ps;
181                        HDC hdc;
182                        TCHAR str[ PROCESS_NAME_MAX + 100 ];
183                        int i, x, y, lef = 0;
184
185                        hdc = ::BeginPaint( hWnd, &ps );
186
187                        for ( i = 0; i < iProcessNum; ++i ) {
188                                x = lef * 300;
189                                y = ( ( (i+1+1/ 2 * 3 - 3 ) - iVscrollPos ) * cyChar;
190                                lef ^= 1;
191
192                                ::wsprintf( str, TEXT(" 進程名稱:%s "), szProcessName[ i ] );
193                                ::TextOut( hdc, x, y, str, lstrlen(str) );
194                                y += cyChar;
195                                ::wsprintf( str, TEXT(" 進程ID號:%u "), dwProcessId[ i ] );
196                                ::TextOut( hdc, x, y, str, lstrlen(str) );
197                        }

198
199                        ::EndPaint( hWnd, &ps );
200                }

201                return 0;
202
203        case WM_DESTROY: // 窗口關閉
204                ::KillTimer( hWnd, 0 );
205                PostQuitMessage(0);
206                return 0;
207
208        default:  // 缺省消息的處理
209                return DefWindowProc(hWnd, message, wParam, lParam);
210        }

211}

212

posted on 2011-03-22 19:02 coreBugZJ 閱讀(278) 評論(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>
            欧美激情综合五月色丁香| 欧美寡妇偷汉性猛交| 国产精品午夜春色av| 亚洲永久精品国产| 一区二区日韩| 国产日产欧产精品推荐色 | 黑人一区二区| 久久人人爽国产| 久久久中精品2020中文| 亚洲第一中文字幕在线观看| 模特精品在线| 欧美日韩国产综合新一区| 亚洲一区在线看| 亚洲欧美国产77777| 国模私拍一区二区三区| 欧美.www| 国产精品成人一区二区三区夜夜夜| 亚洲欧美另类中文字幕| 欧美一级精品大片| 亚洲精品一区中文| 亚洲一区二区三区免费观看| 国产亚洲精品综合一区91| 农夫在线精品视频免费观看| 欧美日在线观看| 久久久久久一区二区三区| 女仆av观看一区| 香蕉乱码成人久久天堂爱免费 | 欧美日韩综合视频| 久久久91精品国产一区二区精品| 久久久www成人免费精品| 亚洲视频在线二区| 久久精品在线| 亚洲一级特黄| 久久久久久免费| 亚洲一区亚洲二区| 另类成人小视频在线| 亚洲免费一在线| 免费视频一区| 久久夜色精品国产噜噜av| 欧美激情中文不卡| 久久男女视频| 国产精品护士白丝一区av| 欧美国产另类| 国产在线精品成人一区二区三区| 亚洲日本免费| 精品99一区二区三区| 中日韩视频在线观看| 亚洲美女电影在线| 久久久噜噜噜久久狠狠50岁| 亚洲综合色自拍一区| 欧美激情一区二区三区蜜桃视频| 久久午夜电影网| 国产欧美一区二区三区视频| 日韩一级黄色片| 亚洲精品久久久一区二区三区| 久久aⅴ国产紧身牛仔裤| 亚洲欧美日韩一区二区三区在线| 欧美激情在线狂野欧美精品| 欧美成人视屏| 亚洲国产精品一区二区第一页| 欧美一区2区三区4区公司二百| 性久久久久久久久久久久| 欧美日韩免费看| 99国产成+人+综合+亚洲欧美| 亚洲国产精品一区在线观看不卡| 欧美在线一级视频| 久久高清福利视频| 国产欧美韩日| 香蕉尹人综合在线观看| 欧美影院视频| 狠狠色丁香久久婷婷综合丁香| 午夜精品亚洲一区二区三区嫩草| 欧美伊人久久久久久午夜久久久久| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 国产精品久久久一区二区三区| 99pao成人国产永久免费视频| 亚洲人成7777| 欧美精品免费观看二区| 亚洲精品免费网站| 亚洲一区二区三区激情| 国产精品欧美日韩| 午夜久久久久久| 另类天堂视频在线观看| 亚洲国产高潮在线观看| 欧美国产精品va在线观看| 亚洲欧洲在线免费| 亚洲专区在线视频| 国产视频不卡| 免费在线日韩av| 一区二区三区视频观看| 欧美在线播放一区二区| 狠狠干成人综合网| 欧美xart系列在线观看| 日韩视频免费在线观看| 欧美一区1区三区3区公司| 国产一区二区三区黄| 毛片一区二区三区| 99热免费精品| 久久亚洲一区二区| 一本色道久久综合亚洲精品不卡| 国产精品久久77777| 久久精品人人做人人爽| 亚洲国产精品一区二区第四页av| 亚洲永久精品大片| 一区二区三区在线视频播放| 欧美精品亚洲二区| 欧美亚洲视频| 日韩视频在线免费| 久久亚洲精选| 亚洲福利在线观看| 国内精品久久国产| 亚洲一区二区三区777| 女女同性精品视频| 午夜在线成人av| 91久久精品美女高潮| 国产精品网曝门| 欧美经典一区二区| 久久久免费精品| 午夜伦理片一区| 99香蕉国产精品偷在线观看| 麻豆精品在线视频| 欧美一二三视频| 一区二区欧美在线观看| 在线成人激情黄色| 国产一区在线看| 国产精品日韩久久久| 欧美成人高清| 久热精品视频在线| 欧美中文字幕在线观看| 亚洲一区二区免费看| 最新国产成人av网站网址麻豆| 久久综合图片| 久久久久久亚洲精品中文字幕 | 国产一区二区观看| 欧美性一区二区| 欧美日韩八区| 欧美日韩国产精品成人| 欧美成人精品1314www| 欧美一级淫片播放口| 亚洲一区自拍| 亚洲欧美中日韩| 亚洲欧美一区二区精品久久久| 日韩午夜中文字幕| 日韩一区二区久久| 亚洲乱码久久| 亚洲九九九在线观看| 亚洲黄网站在线观看| 欧美国产综合一区二区| 欧美激情aaaa| 亚洲高清在线视频| 亚洲国产成人porn| 亚洲国产一区二区在线| 亚洲人成网站精品片在线观看 | 欧美激情一区二区三区在线视频| 久久精品一二三区| 久久精品一区二区| 久久婷婷国产综合国色天香| 久久综合伊人| 欧美成人tv| 亚洲欧洲三级| 一本久久a久久精品亚洲| 中文网丁香综合网| 亚洲欧美成人一区二区在线电影 | 鲁大师影院一区二区三区| 麻豆精品视频| 亚洲国产精品久久人人爱蜜臀| 亚洲人成小说网站色在线| 一区二区免费在线播放| 校园春色综合网| 美女精品自拍一二三四| 欧美日韩精品三区| 国产日韩一区| 91久久久久久| 性做久久久久久免费观看欧美 | 亚洲欧美激情一区二区| 久久精品日产第一区二区| 欧美激情精品久久久久久| 亚洲精品综合| 欧美在线播放一区二区| 欧美激情五月| 国产亚洲激情在线| 99re66热这里只有精品3直播| 亚洲在线成人精品| 欧美高清在线观看| 亚洲一区观看| 欧美高清视频一二三区| 国产精品专区h在线观看| 亚洲国产你懂的| 欧美一区二区在线视频| 亚洲高清中文字幕| 欧美亚洲在线| 欧美色综合天天久久综合精品| 在线不卡亚洲| 久久国产视频网站| 亚洲精品老司机| 美女久久一区| 在线不卡免费欧美| 欧美一区二区三区四区在线观看| 亚洲国产女人aaa毛片在线| 欧美在线观看天堂一区二区三区|