快到圣誕節啦,男票女票都有了嘛?沒有的話,有沒有喜歡的女孩子或者男孩子?。拷裉炀徒o你們分享一個圣誕節的表白程序,希望你們喜歡咯,效果是這樣的:
圣誕節快到了,讓我們用C語言制作一個圣誕表白程序
具體代碼如下咯:
// GreetingCardDemoDlg.cpp : 實現文件//#include "stdafx.h"#include "GreetingCardDemo.h"#include "GreetingCardDemoDlg.h"#include "afxdialogex.h"#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()// CGreetingCardDemoDlg 對話框CGreetingCardDemoDlg::CGreetingCardDemoDlg(CWnd* pParent /*=NULL*/): CDialogEx(CGreetingCardDemoDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CGreetingCardDemoDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CGreetingCardDemoDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()//ON_BN_CLICKED(IDC_BTN_DRAW, &CGreetingCardDemoDlg::OnBnClickedBtnDraw)ON_WM_TIMER()END_MESSAGE_MAP()// CGreetingCardDemoDlg 消息處理程序BOOL CGreetingCardDemoDlg::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);// 設置小圖標//1. 是不是方法沒有被調用//2. 是不是里面的系統方法有問題m_pFont = new CFont;m_pFont->CreateFontW(80,0, 0, 0, FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS,L"Arial");SetTimer(1, 100, nullptr);return TRUE; // 除非將焦點設置到控件,否則返回 TRUE}void CGreetingCardDemoDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}}void CGreetingCardDemoDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // 用于繪制的設備上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(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{Draw();CDialogEx::OnPaint();}}//當用戶拖動最小化窗口時系統調用此函數取得光標//顯示。HCURSOR CGreetingCardDemoDlg::OnQueryDragIcon(){return static_cast<HCURSOR>(m_hIcon);}void CGreetingCardDemoDlg::Draw(){//1.日期CClientDC clientDC(this);//獲取設備//2.天氣CDC memDC;memDC.CreateCompatibleDC(&clientDC);//memDC.CreateCompatibleDC(NULL);//如果我們要畫一張畫//我們是不是需要知道這張畫得畫多大//我們繪畫得紙有多大,我們就能畫多大//我們的窗口有多大就能畫多大//3.獲取大小CRect clientRect;//四邊形的大小GetClientRect(&clientRect);//我們要將一副畫畫上去//1. 要有圖片我們使用搜索引擎 使用QQ截圖//2. 我們要將圖片顯示在我們的窗口上//1. 圖片加載到我們的軟件當中//2. 顯示//我要畫成什么樣子CBitmap drawBmp;drawBmp.LoadBitmapW(IDB_BITMAP_CARD);BITMAP bitMap;drawBmp.GetBitmap(&bitMap);memDC.SelectObject(&drawBmp);clientDC.BitBlt(clientRect.left, clientRect.top, bitMap.bmWidth, clientRect.Height(),&memDC, 0, 0, SRCCOPY);memDC.DeleteDC();}void CGreetingCardDemoDlg::DrawText(){//坐標 1.0版本static int nX = 0;static int nY = 0;static int nColor = 255;CClientDC clientDC(this);CRect clientRect;GetClientRect(&clientRect);CFont *pOldFont = clientDC.SelectObject(m_pFont);//clientDC.SetBkMode(TRANSPARENT);clientDC.SetTextColor(RGB(nColor, 0, 0));//nColor -= 10;if (0 >= nColor)nColor = 255;Draw();clientDC.TextOutW(clientRect.left , clientRect.top + nY, L"我 love you * 莉莉");nX += 10;nY += 10;if (nX >= clientRect.Width()){nX = 0;nY = 0;}if (nY >= clientRect.Height()){nY = 0;}clientDC.SelectObject(pOldFont);}void CGreetingCardDemoDlg::OnTimer(UINT_PTR nIDEvent){DrawText();CDialogEx::OnTimer(nIDEvent);}
這些就是全部代碼辣,里面的句子你們可以自己改成想對對方說的話,這些都是可以自己改噠,代碼只是參考,要學的是編程思路,希望你們能學好C/C++,能為自己所用咯!!
如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答
圖片精選