亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

VC實現圖片拖拽及動畫的實例

2020-01-26 15:55:30
字體:
來源:轉載
供稿:網友

基礎知識
1.PictureBox控件的使用
2.加載位圖文件


1.通過文件路徑獲得位圖句柄

復制代碼 代碼如下:

//獲得位圖句柄 
void CMovePictureDlg::GetHandleFromPath(CString path) 

    hBitmap= (HBITMAP)::LoadImage(AfxGetInstanceHandle(),path,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);//創建位圖句柄 
}

2.通過位圖句柄創建位圖對象并獲得位圖信息
復制代碼 代碼如下:

//獲取位圖對象 

void CMovePictureDlg::GetBitMap(HBITMAP hBitmap) 



   m_BitMap.Attach(hBitmap);//通過位圖句柄創建位圖對象 

 
    //獲取圖像信息 

    BITMAPINFOHEADER bminfo;  

    m_BitMap.GetObject(sizeof(bminfo),&bminfo);  

 
//獲取位圖寬高 

    m_nBmpWidth=bminfo.biWidth; 

    m_nBmpHeight=bminfo.biHeight; 

}

實現步驟:
1.創建一個對話框工程命名為MovePicture
2.打開對話框資源拖入一個PictureBox控件,設置ID為:IDC_PICTUREBOX,設置類型為:位圖
3.拖入兩個靜態文本控件和兩個編輯框控件,靜態文本控件標題分別為:輸入動量系數:、輸入阻力系數:,編輯框ID分別為:IDC_EDITDV、IDC_EDITF,為IDC_EDITDV關聯變量為:m_editDV,為IDC_EDITF關聯變量為:m_editF
4.實現代碼
頭文件
復制代碼 代碼如下:

// MovePictureDlg.h : header file 
// 
#include "PictureBox.h" 

#if !defined(AFX_MOVEPICTUREDLG_H__6FFC1DDF_478C_43D6_B854_4D51E98D5E50__INCLUDED_)
#define AFX_MOVEPICTUREDLG_H__6FFC1DDF_478C_43D6_B854_4D51E98D5E50__INCLUDED_

#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 

///////////////////////////////////////////////////////////////////////////// 
// CMovePictureDlg dialog 

class CMovePictureDlg : public CDialog 

// Construction 
public: 
    void GetBitMap(HBITMAP hBitmap); 
    void GetHandleFromPath(CString path); 
    void SetPicRect(int x,int y); 
    void SetSysPath(); 
    CMovePictureDlg(CWnd* pParent = NULL);  // standard constructor 

// Dialog Data 
    //{{AFX_DATA(CMovePictureDlg) 
    enum { IDD = IDD_MOVEPICTURE_DIALOG }; 
    CEdit   m_editF; 
    CEdit   m_editDV; 
    //}}AFX_DATA 

    // ClassWizard generated virtual function overrides 
    //{{AFX_VIRTUAL(CMovePictureDlg) 
    protected: 
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
    //}}AFX_VIRTUAL 

// Implementation 
protected: 
    HICON m_hIcon; 

    // Generated message map functions 
    //{{AFX_MSG(CMovePictureDlg) 
    virtual BOOL OnInitDialog(); 
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam); 
    afx_msg void OnPaint(); 
    afx_msg HCURSOR OnQueryDragIcon(); 
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 
    afx_msg void OnMouseMove(UINT nFlags, CPoint point); 
    afx_msg void OnLButtonUp(UINT nFlags, CPoint point); 
    afx_msg void OnTimer(UINT nIDEvent); 
    afx_msg void OnDestroy(); 
    //}}AFX_MSG 
    DECLARE_MESSAGE_MAP() 
private: 
    CString sysPath;//保存系統路徑 
    CString bmpPath;//位圖路徑 

    HBITMAP hBitmap;//位圖句柄 
    CBitmap m_BitMap;//位圖對象 
    int m_nBmpWidth;//位圖寬度 
    int m_nBmpHeight;//位圖高度 

    CPictureBox* pictureBox;//圖片控件 
    CRect picRect;//控件所占區域 
    BOOL isSelect;//判斷控件是否被選中 

    BOOL isDown;//判斷鼠標是否按下 

    CPoint oldPoint;//鼠標原始位置 

    CPoint startPoint;//移動起始位置 

    SYSTEMTIME startTime;//開始時間 
    SYSTEMTIME endTime;//結束時間 

    double vx;//x方向速度 
    double vy;//y方向速度 

    double f;//阻力 
    double dv;//動力增量 

    CRect clientRect;//客戶區域 
}; 

//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 

#endif // !defined(AFX_MOVEPICTUREDLG_H__6FFC1DDF_478C_43D6_B854_4D51E98D5E50__INCLUDED_)

實現文件
復制代碼 代碼如下:

// MovePictureDlg.cpp : implementation file 
// 

#include "stdafx.h" 
#include "MovePicture.h" 
#include "MovePictureDlg.h" 
#include <math.h> 

#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 

///////////////////////////////////////////////////////////////////////////// 
// CAboutDlg dialog used for App About 

//計算時間差  
inline   __int64   TimeDiff(SYSTEMTIME left,SYSTEMTIME right)  
{  
    CTime   tmLeft(left.wYear,left.wMonth,left.wDay,0,0,0);  
    CTime   tmRight(left.wYear,left.wMonth,left.wDay,0,0,0);  
    CTimeSpan   sp;  
    sp   =   tmLeft   -   tmRight;//計算日期比較麻煩,就交給MFC去做吧  
    long   lLMinllis   =   (left.wHour*3600   +   left.wMinute*60   +   left.wSecond)*1000   +   left.wMilliseconds;  
    long   lRMinllis   =   (right.wHour*3600   +   right.wMinute*60   +   right.wSecond)*1000   +   right.wMilliseconds;  

    return   (__int64)sp.GetDays()*86400000   +   (lLMinllis   -   lRMinllis); 


class CAboutDlg : public CDialog 

public: 
    CAboutDlg(); 

// Dialog Data 
    //{{AFX_DATA(CAboutDlg) 
    enum { IDD = IDD_ABOUTBOX }; 
    //}}AFX_DATA 

    // ClassWizard generated virtual function overrides 
    //{{AFX_VIRTUAL(CAboutDlg) 
    protected: 
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
    //}}AFX_VIRTUAL 

// Implementation 
protected: 
    //{{AFX_MSG(CAboutDlg) 
    //}}AFX_MSG 
    DECLARE_MESSAGE_MAP() 
}; 

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) 

    //{{AFX_DATA_INIT(CAboutDlg) 
    //}}AFX_DATA_INIT 


void CAboutDlg::DoDataExchange(CDataExchange* pDX) 

    CDialog::DoDataExchange(pDX); 
    //{{AFX_DATA_MAP(CAboutDlg) 
    //}}AFX_DATA_MAP 


BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) 
    //{{AFX_MSG_MAP(CAboutDlg) 
        // No message handlers 
    //}}AFX_MSG_MAP 
END_MESSAGE_MAP() 

///////////////////////////////////////////////////////////////////////////// 
// CMovePictureDlg dialog 

CMovePictureDlg::CMovePictureDlg(CWnd* pParent /*=NULL*/) 
    : CDialog(CMovePictureDlg::IDD, pParent) 

    //{{AFX_DATA_INIT(CMovePictureDlg) 
    //}}AFX_DATA_INIT 
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 

    isDown = FALSE;//初始化鼠標按下狀態 
    isSelect = FALSE;//初始化選中狀態 
    f = 0.05;//初始化阻力 
    dv = 5;//初始化動力增量 


void CMovePictureDlg::DoDataExchange(CDataExchange* pDX) 

    CDialog::DoDataExchange(pDX); 
    //{{AFX_DATA_MAP(CMovePictureDlg) 
    DDX_Control(pDX, IDC_EDITF, m_editF); 
    DDX_Control(pDX, IDC_EDITDV, m_editDV); 
    //}}AFX_DATA_MAP 


BEGIN_MESSAGE_MAP(CMovePictureDlg, CDialog) 
    //{{AFX_MSG_MAP(CMovePictureDlg) 
    ON_WM_SYSCOMMAND() 
    ON_WM_PAINT() 
    ON_WM_QUERYDRAGICON() 
    ON_WM_LBUTTONDOWN() 
    ON_WM_MOUSEMOVE() 
    ON_WM_LBUTTONUP() 
    ON_WM_TIMER() 
    ON_WM_DESTROY() 
    //}}AFX_MSG_MAP 
END_MESSAGE_MAP() 

///////////////////////////////////////////////////////////////////////////// 
// CMovePictureDlg message handlers 

//對話框初始化 
BOOL CMovePictureDlg::OnInitDialog() 

    CDialog::OnInitDialog(); 

    // Add "About…" menu item to system menu. 

    // IDM_ABOUTBOX must be in the system command range. 
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 
    ASSERT(IDM_ABOUTBOX < 0xF000); 

    CMenu* pSysMenu = GetSystemMenu(FALSE); 
    if (pSysMenu != NULL) 
    { 
        CString strAboutMenu; 
        strAboutMenu.LoadString(IDS_ABOUTBOX); 
        if (!strAboutMenu.IsEmpty()) 
        { 
            pSysMenu->AppendMenu(MF_SEPARATOR); 
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 
        } 
    } 

    // Set the icon for this dialog.  The framework does this automatically 
    //  when the application's main window is not a dialog 
    SetIcon(m_hIcon, TRUE);         // Set big icon 
    SetIcon(m_hIcon, FALSE);        // Set small icon 

    // TODO: Add extra initialization here 

    pictureBox = (CPictureBox*)GetDlgItem(IDC_PICTUREBOX);//獲得圖片框指針 

    SetSysPath();//設置系統路徑 

    bmpPath = sysPath+"http://image.bmp";//設置位圖路徑 

    GetHandleFromPath(bmpPath);//創建位圖句柄 

    GetBitMap(hBitmap);//獲得位圖 

    //設置位圖控件區域 
    SetPicRect(0,0); 

    pictureBox->MoveWindow(picRect);//設置控件位置 

    //設置文本框值 
    CString strDV,strF; 
    strDV.Format("%f",dv); 
    strF.Format("%f",f); 

    m_editDV.SetWindowText(strDV); 
    m_editF.SetWindowText(strF); 
    return TRUE;  // return TRUE  unless you set the focus to a control 


void CMovePictureDlg::OnSysCommand(UINT nID, LPARAM lParam) 

    if ((nID & 0xFFF0) == IDM_ABOUTBOX) 
    { 
        CAboutDlg dlgAbout; 
        dlgAbout.DoModal(); 
    } 
    else 
    { 
        CDialog::OnSysCommand(nID, lParam); 
    } 


// If you add a minimize button to your dialog, you will need the code below 
//  to draw the icon.  For MFC applications using the document/view model, 
//  this is automatically done for you by the framework. 

//重繪函數 
void CMovePictureDlg::OnPaint()  

    if (IsIconic()) 
    { 
        CPaintDC dc(this); // device context for painting 

        SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); 

        // Center icon in client rectangle 
        int cxIcon = GetSystemMetrics(SM_CXICON); 
        int cyIcon = GetSystemMetrics(SM_CYICON); 
        CRect rect; 
        GetClientRect(&rect); 
        int x = (rect.Width() 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情在线视频| 欧美日韩aaaa| 久久久久久久久久久久久久久久久久av| 成人激情视频在线| 国产精品免费小视频| 亚洲欧美日韩成人| 久久精品国产亚洲精品2020| 国产精品av在线| 亚洲伦理中文字幕| 欧美日韩国产123| 亚洲精品免费在线视频| 高清亚洲成在人网站天堂| 中文字幕精品一区二区精品| 久久视频精品在线| 日韩专区在线播放| 亚洲欧美国产精品专区久久| 亚洲精品xxxx| 成人a视频在线观看| 国产一区二区三区三区在线观看| 久久97久久97精品免视看| 亚洲欧美制服第一页| 欧美老女人性生活| 亚洲欧美综合图区| 一区二区三区回区在观看免费视频| 成人精品一区二区三区电影免费| 欧美一级淫片aaaaaaa视频| 欧美精品一区在线播放| 国产美女久久精品香蕉69| 91人成网站www| 亚洲精品国产精品国自产在线| 亚洲一区二区三区四区视频| 成人午夜在线视频一区| 欧美性猛交xxxxx水多| 久久久免费观看| 亚洲成人精品在线| 国产不卡精品视男人的天堂| 中文国产成人精品| 亚洲精品国产免费| 日韩视频精品在线| 亚洲一区二区中文| 亚洲精品91美女久久久久久久| 欧美激情免费视频| 亚洲肉体裸体xxxx137| 久久精品久久精品亚洲人| 4438全国成人免费| 国产精品18久久久久久麻辣| 久久99久久久久久久噜噜| 68精品国产免费久久久久久婷婷| 日韩精品视频免费| 亚洲欧美日韩中文在线| 色天天综合狠狠色| 一区二区三区四区精品| 亚洲人a成www在线影院| 成人激情黄色网| 一区二区三区四区精品| 日韩精品免费电影| 日韩hd视频在线观看| 亚洲成**性毛茸茸| 欧美午夜女人视频在线| 国产精品一区二区在线| 国产一区av在线| 国产精品直播网红| 亚洲最大成人在线| 国产性猛交xxxx免费看久久| 国产在线精品一区免费香蕉| 91欧美精品成人综合在线观看| 欧美成人免费播放| 欧美亚洲视频在线观看| 欧美又大粗又爽又黄大片视频| 亚洲自拍欧美色图| 日韩精品中文字幕在线| 日韩高清免费观看| 久久全球大尺度高清视频| 午夜精品福利电影| 97成人精品视频在线观看| 久久久久久免费精品| 精品久久久久久久中文字幕| 欧美高清视频免费观看| 亚洲精选在线观看| 人人做人人澡人人爽欧美| 欧美性精品220| …久久精品99久久香蕉国产| 不卡av在线播放| 亚洲国产精品字幕| 久久久久久国产精品久久| 91国在线精品国内播放| 国内精品视频在线| 日韩中文视频免费在线观看| 亚洲韩国日本中文字幕| 国产精品r级在线| 国产成人97精品免费看片| 亚洲图片制服诱惑| 亚洲激情视频在线播放| 久久成人人人人精品欧| 中文字幕精品www乱入免费视频| 亚洲老头老太hd| 日韩av在线天堂网| 亚洲精品一区二区网址| 国产激情综合五月久久| 国产精品人成电影在线观看| 欧美色播在线播放| 高清欧美一区二区三区| 日本精品一区二区三区在线| 欧美极品在线播放| 国内精品久久久久久久久| 欧美激情中文网| 亚洲国产精品福利| 国产精品久久久久av| 亚洲高清福利视频| 一本色道久久88精品综合| 日韩中文理论片| 久久精品国产欧美亚洲人人爽| 欧美一级片一区| 俺去亚洲欧洲欧美日韩| 国产亚洲欧美日韩精品| 国产在线视频91| 国产精品一区二区性色av| 亚洲欧美日韩精品| 久久久久国产精品一区| 亚洲综合中文字幕68页| 久热国产精品视频| 成人免费视频a| 欧美俄罗斯性视频| 草民午夜欧美限制a级福利片| 亚洲国产成人一区| 国产精品视频久久久久| 久久久久久这里只有精品| 亚洲视频在线观看| 日韩精品久久久久久福利| 国产精品偷伦视频免费观看国产| 国产精品久久久久久久久久新婚| 中文国产成人精品久久一| 国产精品夜间视频香蕉| 久久中文字幕一区| 亚洲精品影视在线观看| 亚洲四色影视在线观看| 91精品久久久久久久久| 91精品国产91久久久久久不卡| 992tv在线成人免费观看| 亚洲片在线资源| 国产网站欧美日韩免费精品在线观看| 欧美激情网站在线观看| 国产亚洲精品91在线| 日韩在线视频线视频免费网站| 色综合久久悠悠| 国产精品日韩欧美大师| 亚洲黄色在线看| 97超级碰碰碰| 欧美性猛交xxxx免费看漫画| 国产偷国产偷亚洲清高网站| 亚洲国产女人aaa毛片在线| 国产成+人+综合+亚洲欧洲| 日韩欧美精品免费在线| 欧美激情第99页| 在线观看不卡av| 亚州av一区二区| 色综合久久88色综合天天看泰| 久久久国产精彩视频美女艺术照福利| 欧美诱惑福利视频| 国产99在线|中文| 九色精品美女在线| 国产精品 欧美在线| 精品国产一区二区三区久久狼黑人| 国产在线不卡精品|