MFC之picture控件滚动条的实现

本文介绍了如何在MFC应用程序中为picture控件添加滚动条,通过详细的主要代码示例,展示了在对话框中实现这一功能的具体步骤。
摘要由CSDN通过智能技术生成

直接上主要代码啦


// Image1Dlg.h : 头文件
//

#pragma once
#include "afxwin.h"

// CImage1Dlg 对话框
class CImage1Dlg : public CDialogEx
{
// 构造
public:
    CImage1Dlg(CWnd* pParent = NULL);   // 标准构造函数

// 对话框数据
    enum { IDD = IDD_IMAGE1_DIALOG };

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持


// 实现
protected:
    HICON m_hIcon;

    // 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    DECLARE_MESSAGE_MAP()

private:
    CString m_strFilePath;
    //定义图像文件信息
    //BITMAPINFOHEADER bi;//信息头
    //RGBQUAD* quad;//调色板
    //BYTE* lpBuf;//图像数据
    //BITMAPINFO* pbi;
    //int flag;  //标志,表示是否打开了bmp文件
    //int numQuad; //调色板数目
    //BYTE* lpShowBuf;//用于显示的图像数据
    //int zoomFactor;//缩放比率

    CImage m_pic;             //载入的图片
    CDC m_cacheDC;           //缓冲DC
    CDC* m_picDC;             //picture control的DC
    CBitmap m_cacheBitmap;  //缓冲位图

    CRect m_client;//picture control大小
    int m_iFirst;

    int m_picWidth;    //载入图片的宽
    int m_picHeight;   //载入图片的高

    int m_iShowWidth;   //要显示的宽
    int m_iShowHeight;   //要显示的高

    int m_iX;    //图较大时要显示的X坐标
    int m_iY;    //图较大时要显示的Y坐标

public:
    CStatic m_PictureControl;//picture control 控件变量
    CScrollBar m_ScrollBarH; //水平滚动条
    CScrollBar m_ScrollBarV; //垂直滚动条
    afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
    afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
    afx_msg void OnBnClickedButtonOpen();
    afx_msg void OnBnClickedOk();
};

// FullScreenDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "FullScreen.h"
#include "FullScreenDlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

#define   WIDTHBYTES(bits) (((bits)+31)/32*4)//用于使图像宽度所占字节数为4byte的倍数    



// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx
{
public:
    CAboutDlg();

// 对话框数据
    enum { IDD = IDD_ABOUTBOX };

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
    DECLARE_MESSAGE_MAP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值