1. 程式人生 > >C語言/C++程式設計打造表白程式——教你做一個浪漫的程式設計師

C語言/C++程式設計打造表白程式——教你做一個浪漫的程式設計師

Microsoft Foundation Classes Graphics Device Interface Application Programming Interface MFC 是微軟公司的基礎類庫,封裝了大量的Windows API函式,能夠快速的開發一些桌面應用程式, GDI是圖形裝置介面,程式設計師專門用來坐圖形繪製功能的。 基本上要做軟體 這些東西都是缺一不可的

C語言打造表白程式——教你怎樣做一個浪漫的程式設計師,程式設計師都是這麼追女朋友的,隨便寫個程式就能搞定,嗨呀!

接下來我就分享下我寫的這個程式的原始碼 ,供參考! 希望大家能寫出自己的程式去追女朋友,如果我有寫的不好的地方往大神指出,我改進。 廢話不多說 直接上程式碼: // MFCApplication2Dlg.cpp : 實現檔案 // #include “stdafx.h” #include “MFCApplication2.h” #include “MFCApplication2Dlg.h” #include “afxdialogex.h” #include “mmsystem.h” #include “Resource.h” #pragma comment(lib,“winmm.lib”) #ifdef _DEBUG #define new DEBUG_NEW #endif // 用於應用程式“關於”選單項的 CAboutDlg 對話方塊 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 對話方塊資料 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支援 // 實現 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CMFCApplication2Dlg 對話方塊 CMFCApplication2Dlg::CMFCApplication2Dlg(CWnd* pParent /=NULL/) : CDialogEx(CMFCApplication2Dlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMFCApplication2Dlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_TEST, &CMFCApplication2Dlg::OnBnClickedButtonTest) END_MESSAGE_MAP() // CMFCApplication2Dlg 訊息處理程式 BOOL CMFCApplication2Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 將“關於…”選單項新增到系統選單中。 // IDM_ABOUTBOX 必須在系統命令範圍內。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 設定此對話方塊的圖示。 當應用程式主視窗不是對話方塊時,框架將自動 // 執行此操作 SetIcon(m_hIcon, TRUE);// 設定大圖示 SetIcon(m_hIcon, FALSE);// 設定小圖示 // TODO: 在此新增額外的初始化程式碼 return TRUE; // 除非將焦點設定到控制元件,否則返回 TRUE } void CMFCApplication2Dlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向對話方塊新增最小化按鈕,則需要下面的程式碼 // 來繪製該圖示。 對於使用文件/檢視模型的 MFC 應用程式, // 這將由框架自動完成。 void CMFCApplication2Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用於繪製的裝置上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // 使圖示在工作區矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 繪製圖標 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //當用戶拖動最小化視窗時系統呼叫此函式取得游標 //顯示。 HCURSOR CMFCApplication2Dlg::OnQueryDragIcon() { return static_cast(m_hIcon); } BOOL g_bStop = FALSE; BOOL PaintFlower(int x, int y) { // 獲取桌面的繪圖裝置並建立相容裝置 HWND hDesk = ::GetDesktopWindow(); HDC hDC = ::GetDC(hDesk); HDC hMD = ::CreateCompatibleDC(hDC); HDC hBuf = ::CreateCompatibleDC(hDC); // 獲取桌面寬和高 DWORD dwWidth = ::GetSystemMetrics(SM_CXSCREEN); DWORD dwHeight = ::GetSystemMetrics(SM_CYSCREEN); // 載入點陣圖資源 HBITMAP tempbmp, oldtempbmp, bmp, oldbmp; tempbmp = ::CreateCompatibleBitmap(hDC, dwWidth, dwHeight); bmp = (HBITMAP)::LoadImage(::GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_FLOWERS), IMAGE_BITMAP, 0, 0, NULL); // 選中資源 oldtempbmp = (HBITMAP)::SelectObject(hMD, tempbmp); oldbmp = (HBITMAP)::SelectObject(hBuf, bmp); // 複製一遍桌面 ::BitBlt(hMD, 0, 0, dwWidth, dwHeight, hDC, 0, 0, SRCCOPY); // 使用雙緩衝的,繪製透明點陣圖 // 先 and 再 or ::BitBlt(hMD, x, y, 100, 100, hBuf, 0, 0, SRCAND); ::BitBlt(hMD, x, y, 100, 100, hBuf, 0, 100, SRCPAINT); // 繪製到桌面 ::BitBlt(hDC, 0, 0, dwWidth, dwHeight, hMD, 0, 0, SRCCOPY); ::SelectObject(hBuf, oldbmp); ::SelectObject(hMD, oldtempbmp); // 釋放記憶體 ::DeleteObject(tempbmp); ::DeleteDC(hBuf); ::DeleteDC(hMD); ::ReleaseDC(hDesk, hDC); return TRUE; } int CMFCApplication2Dlg::ShowMyFlower0(LPVOID lpVoid) { CMFCApplication2Dlg *pThis = (CMFCApplication2Dlg *)lpVoid; srand((unsigned int)time(NULL)); // 獲取桌面螢幕的寬和高 DWORD dwWidth = ::GetSystemMetrics(SM_CXSCREEN); DWORD dwHeight = ::GetSystemMetrics(SM_CYSCREEN); DWORD m = dwWidth / 30, n = dwHeight / 30; DWORD x = 0, y = 0; DWORD i = 0; // 繪製網格的點 599 朵 i = 999; do { if (g_bStop) { return 0; } x = rand() % m; y = rand() % n; PaintFlower(30 * x, 30 * y); i–; Sleep(50); } while (0 <= i); return 0; }

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多幹貨和技術資料分享! int CMFCApplication2Dlg::ShowMyFlower1(LPVOID lpVoid) { CMFCApplication2Dlg *pThis = (CMFCApplication2Dlg *)lpVoid; // 獲取桌面螢幕的寬和高 DWORD dwWidth = ::GetSystemMetrics(SM_CXSCREEN); DWORD dwHeight = ::GetSystemMetrics(SM_CYSCREEN); DWORD m = dwWidth / 30, n = dwHeight / 30; DWORD x = 0, y = 0; DWORD i = 0; // 隨機 400 朵 i = 999; do { if (g_bStop) { return 0; } x = rand() % m; y = rand() % n; PaintFlower(30 * x, 30 * y); i–; Sleep(50); } while (0 <= i); return 0; } //畫x軸方向的花 int CMFCApplication2Dlg::ShowMyFlower2(LPVOID lpVoid) { CMFCApplication2Dlg *pThis = (CMFCApplication2Dlg )lpVoid; /Sleep(500);/ // 獲取桌面螢幕的寬和高 DWORD dwWidth = ::GetSystemMetrics(SM_CXSCREEN); DWORD dwHeight = ::GetSystemMetrics(SM_CYSCREEN); DWORD i = 0; // 順時針顯示 while (TRUE) { for (i = 0; i < dwWidth - 50; i = i + 60) { PaintFlower(i, 0); Sleep(300); } for (i = 0; i < dwHeight - 50; i = i + 60) { PaintFlower(dwWidth - 100, i); Sleep(300); } } / for(i = dwWidth - 100; i >= 50; i = i - 60) { PaintFlower(i, dwHeight - 100); Sleep(300); } for(i = dwHeight - 100; i >= 50 ; i = i - 60) { PaintFlower(0, i); Sleep(300); } */ return 0; } int CMFCApplication2Dlg::ShowMyFlower3(LPVOID lpVoid) { CMFCApplication2Dlg *pThis = (CMFCApplication2Dlg *)lpVoid; //Sleep(1000); // 獲取桌面螢幕的寬和高 DWORD dwWidth = ::GetSystemMetrics(SM_CXSCREEN); DWORD dwHeight = ::GetSystemMetrics(SM_CYSCREEN); DWORD i = 0; while (TRUE) { for (i = dwWidth - 100; i >= 50; i = i - 60) { PaintFlower(i, dwHeight - 100); Sleep(300); } for (i = dwHeight - 100; i >= 50; i = i - 60) { PaintFlower(0, i); Sleep(300); } } return 0; } int CMFCApplication2Dlg::ShowMyFlower4(LPVOID lpVoid) { CMFCApplication2Dlg *pThis = (CMFCApplication2Dlg *)lpVoid; //Sleep(12000); HWND hDesk = ::GetDesktopWindow(); HDC hDC = ::GetDC(hDesk); HDC hMD = ::CreateCompatibleDC(hDC); HDC hBuf = ::CreateCompatibleDC(hDC); // 獲取桌面寬和高 DWORD dwWidth = ::GetSystemMetrics(SM_CXSCREEN); DWORD dwHeight = ::GetSystemMetrics(SM_CYSCREEN); // 計算繪製的位置 int x = (dwWidth - 400) / 2; int y = 110; // 載入點陣圖資源 HBITMAP tempbmp, oldtempbmp, bmp, oldbmp; tempbmp = ::CreateCompatibleBitmap(hDC, dwWidth, dwHeight); //GetModuleHandle是獲取一個應用程式或動態連結庫的模組控制代碼 bmp = (HBITMAP)::LoadImage(::GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_520), IMAGE_BITMAP, 0, 0, NULL); // 選中資源 oldtempbmp = (HBITMAP)::SelectObject(hMD, tempbmp); oldbmp = (HBITMAP)::SelectObject(hBuf, bmp); DWORD i = 0, j = 0; while (TRUE) { for (i = 0; i < 4; i++) { // 複製一遍桌面 ::BitBlt(hMD, 0, 0, dwWidth, dwHeight, hDC, 0, 0, SRCCOPY); // 使用雙緩衝的,繪製透明點陣圖 // 先 and 再 or ::BitBlt(hMD, x, y, 400, 150, hBuf, 0, 0, SRCAND); ::BitBlt(hMD, x, y, 400, 150, hBuf, 0, 150 * (1 + i), SRCPAINT); // 繪製到桌面 ::BitBlt(hDC, 0, 0, dwWidth, dwHeight, hMD, 0, 0, SRCCOPY); Sleep(300); } for (j = 2; j > 0; j–) { // 複製一遍桌面 ::BitBlt(hMD, 0, 0, dwWidth, dwHeight, hDC, 0, 0, SRCCOPY); // 使用雙緩衝的,繪製透明點陣圖 // 先 and 再 or ::BitBlt(hMD, x, y, 400, 150, hBuf, 0, 0, SRCAND); ::BitBlt(hMD, x, y, 400, 150, hBuf, 0, 150 * (1 + j), SRCPAINT); // 繪製到桌面 ::BitBlt(hDC, 0, 0, dwWidth, dwHeight, hMD, 0, 0, SRCCOPY); Sleep(300); } } ::SelectObject(hBuf, oldbmp); ::SelectObject(hMD, oldtempbmp); // 釋放記憶體 ::DeleteObject(tempbmp); ::DeleteDC(hBuf); ::DeleteDC(hMD); ::ReleaseDC(hDesk, hDC); return 0; } int CMFCApplication2Dlg::ShowMyFlower5(LPVOID lpVoid) { CMFCApplication2Dlg *pThis = (CMFCApplication2Dlg *)lpVoid; //Sleep(15000); HWND hDesk = ::GetDesktopWindow(); HDC hDC = ::GetDC(hDesk); HDC hMD = ::CreateCompatibleDC(hDC); HDC hBuf = ::CreateCompatibleDC(hDC); HDC hBuf2 = ::CreateCompatibleDC(hDC); // 獲取桌面寬和高 DWORD dwWidth = ::GetSystemMetrics(SM_CXSCREEN); DWORD dwHeight = ::GetSystemMetrics(SM_CYSCREEN); // 計算繪製的位置 int x = (dwWidth - 700) / 2; int y = 260; // 載入點陣圖資源 HBITMAP tempbmp, oldtempbmp, bmp, oldbmp, bmp2, oldbmp2; tempbmp = ::CreateCompatibleBitmap(hDC, dwWidth, dwHeight); bmp = (HBITMAP)::LoadImage(::GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_LOVE), IMAGE_BITMAP, 0, 0, NULL); bmp2 = (HBITMAP)::LoadImage(::GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_LOVE2), IMAGE_BITMAP, 0, 0, NULL); // 選中資源 oldtempbmp = (HBITMAP)::SelectObject(hMD, tempbmp); oldbmp = (HBITMAP)::SelectObject(hBuf, bmp); oldbmp2 = (HBITMAP)::SelectObject(hBuf2, bmp2); while (TRUE) { // 複製一遍桌面 ::BitBlt(hMD, 0, 0, dwWidth, dwHeight, hDC, 0, 0, SRCCOPY); // 使用雙緩衝的,繪製點陣圖 ::BitBlt(hMD, x, y, 700, 450, hBuf, 0, 0, SRCAND); ::BitBlt(hMD, x, y, 700, 450, hBuf2, 0, 0, SRCPAINT); // 繪製到桌面 ::BitBlt(hDC, 0, 0, dwWidth, dwHeight, hMD, 0, 0, SRCCOPY); Sleep(300); } ::SelectObject(hBuf, oldbmp); ::SelectObject(hBuf, oldbmp2); ::SelectObject(hMD, oldtempbmp); // 釋放記憶體 ::DeleteObject(tempbmp); ::DeleteDC(hBuf); ::DeleteDC(hMD); ::ReleaseDC(hDesk, hDC); return 0; } int CMFCApplication2Dlg::ShowMyFlower6(LPVOID lpVoid) { CMFCApplication2Dlg *pThis = (CMFCApplication2Dlg *)lpVoid; //Sleep(15000); srand((unsigned int)time(NULL)); // 獲取桌面螢幕的寬和高 DWORD dwWidth = ::GetSystemMetrics(SM_CXSCREEN); DWORD dwHeight = ::GetSystemMetrics(SM_CYSCREEN); //DWORD m = dwWidth/100, n = dwHeight/100; DWORD x = 0, y = 0; while (TRUE) { x = rand() % dwWidth; y = rand() % dwHeight; PaintFlower(x, y); Sleep(300); } return 0; } void CMFCApplication2Dlg::OnBnClickedButtonTest() {