亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? multi2.c

?? Programming Visual C++ 5th edition source code
?? C
字號:
/*---------------------------------------
   MULTI2.C -- Multitasking Demo
               (c) Charles Petzold, 1998
  ---------------------------------------*/

#include <windows.h>
#include <math.h>
#include <process.h>

typedef struct
{
     HWND hwnd ;
     int  cxClient ;
     int  cyClient ;
     int  cyChar ;
     BOOL bKill ;
}
PARAMS, *PPARAMS ;

LRESULT APIENTRY WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("Multi2") ;
     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       = 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 = CreateWindow (szAppName, TEXT ("Multitasking Demo"),
                          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) ;
          DispatchMessage (&msg) ;
     }
     return msg.wParam ;
}

int CheckBottom (HWND hwnd, int cyClient, int cyChar, int iLine)
{
     if (iLine * cyChar + cyChar > cyClient)
     {
          InvalidateRect (hwnd, NULL, TRUE) ;
          UpdateWindow (hwnd) ;
          iLine = 0 ;
     }
     return iLine ;
}

// ------------------------------------------------
// Window 1: Display increasing sequence of numbers
// ------------------------------------------------

void Thread1 (PVOID pvoid)
{
     HDC     hdc ;
     int     iNum = 0, iLine = 0 ;
     PPARAMS pparams ;
     TCHAR   szBuffer[16] ;
     
     pparams = (PPARAMS) pvoid ;
     
     while (!pparams->bKill)
     {
          if (iNum < 0)
               iNum = 0 ;
          
          iLine = CheckBottom (pparams->hwnd,   pparams->cyClient,
                               pparams->cyChar, iLine) ;

          hdc = GetDC (pparams->hwnd) ;
          
          TextOut (hdc, 0, iLine * pparams->cyChar, szBuffer, 
                   wsprintf (szBuffer, TEXT ("%d"), iNum++)) ;               
          
          ReleaseDC (pparams->hwnd, hdc) ;
          iLine++ ;
     }
     _endthread () ;
}

LRESULT APIENTRY WndProc1 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static PARAMS params ;
     
     switch (message)
     {
     case WM_CREATE:
          params.hwnd = hwnd ;
          params.cyChar = HIWORD (GetDialogBaseUnits ()) ;
          _beginthread (Thread1, 0, &params) ;
          return 0 ;
          
     case WM_SIZE:
          params.cyClient = HIWORD (lParam) ;
          return 0 ;
          
     case WM_DESTROY:
          params.bKill = TRUE ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

// ------------------------------------------------------
// Window 2: Display increasing sequence of prime numbers
// ------------------------------------------------------

void Thread2 (PVOID pvoid)
{
     HDC     hdc ;
     int     iNum = 1, iLine = 0, i, iSqrt ;
     PPARAMS pparams ;
     TCHAR   szBuffer[16] ;
     
     pparams = (PPARAMS) pvoid ;
     
     while (!pparams->bKill)
     {
          do
          {
               if (++iNum < 0)
                    iNum = 0 ;
               
               iSqrt = (int) sqrt (iNum) ;
               
               for (i = 2 ; i <= iSqrt ; i++)
                    if (iNum % i == 0)
                         break ;
          }
          while (i <= iSqrt) ;
          
          iLine = CheckBottom (pparams->hwnd,   pparams->cyClient,
                               pparams->cyChar, iLine) ;
          
          hdc = GetDC (pparams->hwnd) ;
          
          TextOut (hdc, 0, iLine * pparams->cyChar, szBuffer, 
                   wsprintf (szBuffer, TEXT ("%d"), iNum)) ;
          
          ReleaseDC (pparams->hwnd, hdc) ;
          iLine++ ;
     }
     _endthread () ;
}

LRESULT APIENTRY WndProc2 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static PARAMS params ;
     
     switch (message)
     {
     case WM_CREATE:
          params.hwnd = hwnd ;
          params.cyChar = HIWORD (GetDialogBaseUnits ()) ;
          _beginthread (Thread2, 0, &params) ;
          return 0 ;
          
     case WM_SIZE:
          params.cyClient = HIWORD (lParam) ;
          return 0 ;
          
     case WM_DESTROY:
          params.bKill = TRUE ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

// Window 3: Display increasing sequence of Fibonacci numbers
// ----------------------------------------------------------

void Thread3 (PVOID pvoid)
{
     HDC     hdc ;
     int     iNum = 0, iNext = 1, iLine = 0, iTemp ;
     PPARAMS pparams ;
     TCHAR   szBuffer[16] ;
     
     pparams = (PPARAMS) pvoid ;
     
     while (!pparams->bKill)
     {
          if (iNum < 0)
          {
               iNum  = 0 ;
               iNext = 1 ;
          }
          iLine = CheckBottom (pparams->hwnd,   pparams->cyClient,
                               pparams->cyChar, iLine) ;

          hdc = GetDC (pparams->hwnd) ;
          
          TextOut (hdc, 0, iLine * pparams->cyChar, szBuffer, 
                   wsprintf (szBuffer, TEXT ("%d"), iNum)) ;
          
          ReleaseDC (pparams->hwnd, hdc) ;
          iTemp  = iNum ;
          iNum   = iNext ;
          iNext += iTemp ;
          iLine++ ;
     }
     _endthread () ;
}

LRESULT APIENTRY WndProc3 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static PARAMS params ;
     
     switch (message)
     {
     case WM_CREATE:
          params.hwnd = hwnd ;
          params.cyChar = HIWORD (GetDialogBaseUnits ()) ;
          _beginthread (Thread3, 0, &params) ;
          return 0 ;
          
     case WM_SIZE:
          params.cyClient = HIWORD (lParam) ;
          return 0 ;
          
     case WM_DESTROY:
          params.bKill = TRUE ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

// -----------------------------------------
// Window 4: Display circles of random radii
// -----------------------------------------

void Thread4 (PVOID pvoid)
{
     HDC     hdc ;
     int     iDiameter ;
     PPARAMS pparams ;
     
     pparams = (PPARAMS) pvoid ;
     
     while (!pparams->bKill)
     {
          InvalidateRect (pparams->hwnd, NULL, TRUE) ;
          UpdateWindow (pparams->hwnd) ;
          
          iDiameter = rand() % (max (1,
                                min (pparams->cxClient, pparams->cyClient))) ;
          
          hdc = GetDC (pparams->hwnd) ;
          
          Ellipse (hdc, (pparams->cxClient - iDiameter) / 2,
                        (pparams->cyClient - iDiameter) / 2,
                        (pparams->cxClient + iDiameter) / 2,
                        (pparams->cyClient + iDiameter) / 2) ;
          
          ReleaseDC (pparams->hwnd, hdc) ;
     }
     _endthread () ;
}

LRESULT APIENTRY WndProc4 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static PARAMS params ;
     
     switch (message)
     {
     case WM_CREATE:
          params.hwnd = hwnd ;
          params.cyChar = HIWORD (GetDialogBaseUnits ()) ;
          _beginthread (Thread4, 0, &params) ;
          return 0 ;
          
     case WM_SIZE:
          params.cxClient = LOWORD (lParam) ;
          params.cyClient = HIWORD (lParam) ;
          return 0 ;
          
     case WM_DESTROY:
          params.bKill = TRUE ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

// -----------------------------------
// Main window to create child windows
// -----------------------------------

LRESULT APIENTRY WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static HWND    hwndChild[4] ;
     static TCHAR * szChildClass[] = { TEXT ("Child1"), TEXT ("Child2"),
                                       TEXT ("Child3"), TEXT ("Child4") } ;
     static WNDPROC ChildProc[] = { WndProc1, WndProc2, WndProc3, WndProc4 } ;
     HINSTANCE      hInstance ;
     int            i, cxClient, cyClient ;
     WNDCLASS       wndclass ;
     
     switch (message)
     {
     case WM_CREATE:
          hInstance = (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE) ;
          
          wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
          wndclass.cbClsExtra    = 0 ;
          wndclass.cbWndExtra    = 0 ;
          wndclass.hInstance     = hInstance ;
          wndclass.hIcon         = NULL ;
          wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
          wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
          wndclass.lpszMenuName  = NULL ;
          
          for (i = 0 ; i < 4 ; i++)
          {
               wndclass.lpfnWndProc   = ChildProc[i] ;
               wndclass.lpszClassName = szChildClass[i] ;
               
               RegisterClass (&wndclass) ;
               
               hwndChild[i] = CreateWindow (szChildClass[i], NULL,
                                   WS_CHILDWINDOW | WS_BORDER | WS_VISIBLE,
                                   0, 0, 0, 0, 
                                   hwnd, (HMENU) i, hInstance, NULL) ;
          }
          
          return 0 ;
          
     case WM_SIZE:
          cxClient = LOWORD (lParam) ;
          cyClient = HIWORD (lParam) ;
          
          for (i = 0 ; i < 4 ; i++)
               MoveWindow (hwndChild[i], (i % 2) * cxClient / 2,
                                         (i > 1) * cyClient / 2,
                           cxClient / 2, cyClient / 2, TRUE) ;
          return 0 ;
          
     case WM_CHAR:
          if (wParam == '\x1B')
               DestroyWindow (hwnd) ;
          
          return 0 ;
          
     case WM_DESTROY:
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频在线播放观看| 亚洲品质自拍视频| 亚洲一区二区三区小说| 99精品视频中文字幕| 亚洲色图一区二区三区| 成人av在线资源网| 亚洲国产成人一区二区三区| 国产成人精品免费在线| 中文字幕av在线一区二区三区| 丝袜美腿成人在线| 日韩午夜精品电影| 久久综合综合久久综合| 69av一区二区三区| 男女男精品网站| 久久久久久久av麻豆果冻| 成人看片黄a免费看在线| 亚洲影院在线观看| 精品国产91久久久久久久妲己| 亚洲一区二区三区视频在线| 欧美成人性战久久| 99re热视频这里只精品| 日本系列欧美系列| 国产精品女人毛片| 欧美日韩免费观看一区二区三区 | 粉嫩av一区二区三区在线播放| 国产精品不卡在线| 久久综合九色综合欧美就去吻 | 91精品国产免费| 99精品视频一区二区| 激情偷乱视频一区二区三区| 中文字幕日韩一区二区| 久久先锋资源网| 欧美在线播放高清精品| 国产成a人亚洲| 麻豆免费精品视频| 麻豆精品久久精品色综合| 亚洲精品乱码久久久久久久久 | 91精品国产综合久久久蜜臀图片| 国产成人在线电影| 精品亚洲aⅴ乱码一区二区三区| 国产欧美精品一区| 国产亚洲欧美激情| 欧美国产视频在线| 中文字幕在线不卡| 亚洲三级电影全部在线观看高清| 久久久久国产一区二区三区四区| 欧美高清视频不卡网| 色菇凉天天综合网| 欧美亚洲高清一区二区三区不卡| 在线观看日韩一区| 91精品国产欧美一区二区18| 日韩精品在线一区二区| 精品国产乱码久久久久久闺蜜 | proumb性欧美在线观看| 国产精品亚洲视频| 高清国产一区二区三区| 国产91精品一区二区麻豆亚洲| eeuss鲁片一区二区三区| 色婷婷精品大在线视频| 欧美一级二级在线观看| 亚洲国产欧美一区二区三区丁香婷 | 亚洲一二三区不卡| 在线成人免费视频| 国产精品高潮久久久久无| 国产成人一区二区精品非洲| 精品国产百合女同互慰| 国内精品自线一区二区三区视频| 9191久久久久久久久久久| 一区二区三区中文字幕在线观看| 国产成人精品三级麻豆| 香港成人在线视频| 欧美国产日韩精品免费观看| 色久优优欧美色久优优| 极品销魂美女一区二区三区| 自拍视频在线观看一区二区| 日韩一区二区麻豆国产| 色婷婷av久久久久久久| 激情综合五月天| 日韩成人精品在线观看| 亚洲精品中文字幕在线观看| 欧美精品一区二区三区一线天视频| av日韩在线网站| 福利一区在线观看| 国产毛片一区二区| 免费成人在线网站| 天天免费综合色| 亚洲在线视频免费观看| 亚洲手机成人高清视频| 中文字幕 久热精品 视频在线 | 综合网在线视频| 久久久久国产一区二区三区四区| 欧美一区二区三区视频| 91成人免费网站| 色综合久久99| 欧美午夜电影网| 欧美精品在线一区二区| 欧美福利视频一区| 精品国产乱码久久久久久免费| 欧美一区二区三区在线| 欧美不卡一区二区| 久久这里都是精品| 国产精品电影一区二区| 亚洲欧美一区二区三区极速播放| 欧美日韩国产综合视频在线观看| 成人激情开心网| 成人免费三级在线| 成人天堂资源www在线| 不卡在线观看av| 日本丶国产丶欧美色综合| 91美女在线视频| 欧美性猛交xxxx黑人交| 欧美人妖巨大在线| 精品奇米国产一区二区三区| 久久亚洲精精品中文字幕早川悠里| 欧美成va人片在线观看| 中文字幕第一区第二区| 国产精品欧美极品| 亚洲国产精品久久艾草纯爱 | 久久网站最新地址| 久久久久国色av免费看影院| 久久婷婷色综合| 亚洲特黄一级片| 日韩精品欧美精品| 国产精品一区二区免费不卡| 91精彩视频在线| 91高清在线观看| 精品久久久久久久久久久久包黑料| 久久精品日产第一区二区三区高清版| 国产精品情趣视频| 久久国产精品免费| 欧美丝袜丝nylons| 1000精品久久久久久久久| 日韩中文字幕一区二区三区| 91在线丨porny丨国产| 欧美一卡二卡三卡四卡| 亚洲精品高清在线观看| 国产成都精品91一区二区三| 91精品综合久久久久久| 国产精品久久久久久久蜜臀| 麻豆国产欧美日韩综合精品二区| 成人免费观看av| 国产精品女同互慰在线看| 国产一区二区久久| 精品国产电影一区二区| 久久国产生活片100| 精品裸体舞一区二区三区| 亚洲福利视频导航| 在线观看免费视频综合| 亚洲婷婷在线视频| 成人黄色大片在线观看| 欧美激情中文字幕一区二区| 日韩午夜小视频| 亚洲愉拍自拍另类高清精品| 日本道色综合久久| 亚洲成精国产精品女| 日韩免费看的电影| 经典三级视频一区| 亚洲国产aⅴ天堂久久| 国产精品无码永久免费888| 欧美午夜不卡视频| 91丨porny丨最新| 国产福利一区二区三区在线视频| 午夜伦欧美伦电影理论片| 亚洲视频资源在线| 欧美性极品少妇| 国产精品一级在线| 一区二区三区四区五区视频在线观看| 欧美天堂一区二区三区| 国产九色精品成人porny| 亚洲免费观看视频| 日韩欧美www| 欧美三级在线播放| 99re这里都是精品| 国产精品1区2区3区| 免费在线一区观看| 自拍偷拍国产亚洲| 国产精品麻豆视频| 精品黑人一区二区三区久久| 精品婷婷伊人一区三区三| 国产成人精品三级| 免费观看91视频大全| 亚州成人在线电影| 亚洲人成在线观看一区二区| 亚洲国产精品99久久久久久久久| 激情综合色综合久久| 精品剧情在线观看| 色8久久人人97超碰香蕉987| 欧美日韩综合色| 精品国产乱码久久久久久闺蜜 | 91精品国产乱| 337p日本欧洲亚洲大胆精品| 国产视频一区在线观看| 日韩美女啊v在线免费观看| 亚洲摸摸操操av| 久久精品国产网站| 色综合天天综合在线视频| 在线影院国内精品| 欧美日韩在线观看一区二区| 国产成人免费视频网站高清观看视频| av在线不卡网|