国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++實現新年賀卡程序

2020-01-26 13:29:45
字體:
來源:轉載
供稿:網友

用c++應用程序編寫的雪花賀卡,逢年過節送給你自己身邊的親友吧

snow.cpp

///////////////////////////////////////////////////////////////////////////////// Snow.cpp// Date: 2009-2-5 21:16// A moving ball./////////////////////////////////////////////////////////////////////////////////#include <assert.h>#include "Snow.h"TCHAR strForWin1[] = "時間過得好快啊!";TCHAR strForWin2[] = "開學已經十周了..." ;TCHAR strForWin3[] = "你學的怎么樣了?";TCHAR strForWin4[] = "有問題一定要及時讓我知道";TCHAR strForWin5[] = "祝大家“小光棍節”快樂";TCHAR strForWin6[] = "  CJ Wang 2011.11.1";const int nMaxHeight = 450;#define ID_TIMER 1///////////////////////////////////////////////////////////////////////////////int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, char* cmdParam, int cmdShow ){ char className[] = "Snow"; MovingBall MovingBallClass( WindowsProcedure, className, hInst ); MovingBallClass.Register(); WinMaker win( "-- Have a joy here!", className, hInst ); win.Show( cmdShow ); MSG msg; int status;  while( ( status = ::GetMessage( & msg, NULL, 0, 0 ) ) != 0 ) { if ( status == -1 ) return -1; ::TranslateMessage( & msg ); ::DispatchMessage( & msg ); } return msg.wParam;}///////////////////////////////////////////////////////////////////////////////MovingBall::MovingBall( WNDPROC wndProc, const char* className, HINSTANCE hInstance ){ _class.style = 0; _class.lpfnWndProc = wndProc; // Windows procedure: mandatory _class.cbClsExtra = 0; _class.cbWndExtra = 0; _class.hInstance = hInstance; _class.hIcon = 0; // Owner of class: mandatory _class.hCursor = ::LoadCursor( 0, IDC_ARROW ); _class.hbrBackground = (HBRUSH) ( COLOR_WINDOW + 1 ); // Optional _class.lpszMenuName = 0; _class.lpszClassName = className; // Mandatory }WinMaker::WinMaker( const char* szCaption, const char* className, HINSTANCE hInstance ){ DWORD dwStyle = WS_OVERLAPPEDWINDOW; dwStyle &= ~WS_SIZEBOX; dwStyle &= ~WS_MAXIMIZEBOX; dwStyle &= ~WS_MINIMIZEBOX; _hWnd = ::CreateWindow( className, // Name of a registered window class szCaption, // Window caption dwStyle, // Window style CW_USEDEFAULT, // x position CW_USEDEFAULT, // y position 787, // width 590, // height 0, // Handle to parent window 0, // Handle to menu hInstance, // Application instance 0 ); // Window creation data}/*:: -- 作用域標識符!如果是在MFC下編程的話,因為MFC封裝了API函數,但是參數有的和API函數不一樣,比如MFC封裝的函數一般都沒有句柄這個參數,但是API函數都有,所以在MFC編程中,如果你調用的是全局的API函數的話就要加::符號,來通知編譯器你調用的是全局的API函數,而不是MFC封裝的API函數!當然有的函數比如參數是個布爾型的,MFC封裝的函數和全局的API函數的參數相同,編譯器默認的是調用MFC封裝的函數,所以你加不加::作用域標識符都是一樣的!!控制臺下編寫的程序用的就是API函數所以沒必要加::作用域標識符的。*////////////////////////////////////////////////////////////////////////////////LRESULT CALLBACK WindowsProcedure( HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam ){ static HBITMAP hbmpBkground = NULL, hbmpSnow = NULL, hbmpMask = NULL; static Snow snowFlakes[ 80 ]; static int countSnow = 0; static int cxClient, cyClient; static int nHeightY = nMaxHeight; COLORREF clrBk; PAINTSTRUCT ps; HDC hdc = NULL, hdcMem = NULL; HINSTANCE hInst = NULL; switch( uMessage ) { case WM_CREATE: hInst = ( (LPCREATESTRUCT) lParam )->hInstance; assert( hInst ); hbmpBkground = ::LoadBitmap( hInst, TEXT( "bground" ) ); assert( hbmpBkground ); hbmpSnow = ::LoadBitmap( hInst, TEXT( "snow" ) ); assert( hbmpSnow ); hbmpMask = ::LoadBitmap( hInst, TEXT( "mask" ) );  assert( hbmpMask ); ::SetWindowPos( hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE ); //設置定時器 ::SetTimer( hWnd, ID_TIMER, 160, NULL ); return 0; case WM_SIZE: cxClient = LOWORD( lParam ); cyClient = HIWORD( lParam ); return 0; case WM_PAINT: hdc = ::BeginPaint( hWnd, & ps ); assert( hdc ); hdcMem = ::CreateCompatibleDC( hdc ); assert( hdcMem ); ::SelectObject( hdcMem, hbmpBkground ); ::BitBlt( hdc, 0, 0,  cxClient, cyClient, hdcMem, 0, 0, SRCCOPY );  ::DeleteDC( hdcMem ); ::EndPaint( hWnd, & ps );  return 0; case WM_TIMER: ::FlashWindow( hWnd, TRUE ); if ( countSnow < 80 ) { snowFlakes[ countSnow ].xPos = rand() % cxClient; snowFlakes[ countSnow ].yPos = 0; snowFlakes[ countSnow ].bIsExist = TRUE; countSnow++; } if ( countSnow == 80 ) countSnow = 0; hdc = ::GetDC( hWnd ); assert( hdc ); hdcMem = ::CreateCompatibleDC( hdc ); assert( hdcMem ); ::SelectObject( hdcMem, hbmpBkground ); ::BitBlt( hdc, 0, 0,  cxClient, cyClient, hdcMem, 0, 0, SRCCOPY ); clrBk = ::GetBkColor( hdc ); ::SetTextColor( hdc, RGB( 0, 11, 255 ) ); ::SetBkColor( hdc, clrBk ); ::TextOut( hdc, 100, nHeightY, strForWin1, lstrlen( strForWin1 ) ); ::TextOut( hdc, 100, nHeightY + 18, strForWin2, lstrlen( strForWin2 ) ); ::TextOut( hdc, 100, nHeightY + 36, strForWin3, lstrlen( strForWin3 ) ); ::TextOut( hdc, 100, nHeightY + 54, strForWin4, lstrlen( strForWin4 ) ); ::TextOut( hdc, 100, nHeightY + 70, strForWin5, lstrlen( strForWin5 ) ); ::TextOut( hdc, 100, nHeightY + 88, strForWin6, lstrlen( strForWin6 ) );  // // The redraw area for the text // nHeightY -= 10; if ( nHeightY <= -88 ) { nHeightY = nMaxHeight; }  int i; for ( i = 0; i < 80; i++ ) { if ( snowFlakes[ i ].bIsExist ) { ::SelectObject( hdcMem, hbmpMask ); ::BitBlt( hdc, snowFlakes[ i ].xPos, snowFlakes[ i ].yPos, 20, 20, hdcMem, 0, 0, SRCAND ); ::SelectObject( hdcMem, hbmpSnow ); ::BitBlt( hdc, snowFlakes[ i ].xPos, snowFlakes[ i ].yPos, 20, 20, hdcMem, 0, 0, SRCPAINT ); if ( rand() % 2 == 0 ) snowFlakes[ i ].xPos += 3; else snowFlakes[ i ].xPos -= 3; snowFlakes[ i ].yPos += 10; if ( snowFlakes[ i ].yPos > cyClient ) { snowFlakes[ i ].xPos = rand() % cxClient; snowFlakes[ i ].yPos = 0; } } }  ::ReleaseDC( hWnd, hdc ); ::DeleteDC( hdcMem ); return 0;  case WM_DESTROY: ::DeleteObject( hbmpBkground ); ::DeleteObject( hbmpSnow ); ::DeleteObject( hbmpMask ); ::KillTimer( hWnd, ID_TIMER ); ::PostQuitMessage( 0 ); return 0; } return ::DefWindowProc( hWnd, uMessage, wParam, lParam );}

源碼下載:賀卡程序

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南乐县| 南开区| 拉孜县| 昌都县| 岢岚县| 华亭县| 汉源县| 金川县| 梅河口市| 稻城县| 金塔县| 旬邑县| 苍南县| 修武县| 北海市| 彭州市| 江油市| 新乡县| 炎陵县| 峡江县| 石屏县| 钟祥市| 泗水县| 富平县| 张家口市| 新津县| 凤庆县| 铜山县| 惠州市| 马关县| 建水县| 台东县| 肇源县| 伊金霍洛旗| 丰原市| 上林县| 迁安市| 三穗县| 灵寿县| 随州市| 玛曲县|