手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

用Visual C 设计屏幕抓图程序

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  //}}AFX_VIRTUAL
  // Implementation
 protected:
  HICON m_hIcon;
  // Generated message map functions
  //{{AFX_MSG(CCaptureDlg)
  virtual BOOL OnInitDialog();
  afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
  afx_msg void OnPaint();
  afx_msg HCURSOR OnQueryDragIcon();
  virtual void OnCancel();
  afx_msg void OnAbout();
  afx_msg void OnBrowse();
  afx_msg void OnChange();
  //}}AFX_MSG
  DECLARE_MESSAGE_MAP()
};
#endif

////////////////////// CaptureDlg.cpp : implementation file
#include "stdafx.h"
#include "Capture.h"
#include "CaptureDlg.h"
#include <windowsx.h>
#pragma comment(lib,"hook.lib")
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define IDM_SHELL WM_USER 1
BOOL __declspec(dllexport)__stdcall AddHotkey(HWND,UCHAR key,UCHAR mask);
BOOL __declspec(dllexport)__stdcall DeleteHotkey(HWND,UCHAR key,UCHAR mask);
UCHAR Key_Table[]={0x78,0x79,0x7a,0x7b,0x6a,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
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()

CCaptureDlg::CCaptureDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCaptureDlg::IDD, pParent)
{
 //{{AFX_DATA_INIT(CCaptureDlg)
 m_bControl = FALSE;
 m_bAlt = FALSE;
 m_bShift = FALSE;
 m_Path = _T("c:");
 m_Number = _T("0 picture captured.");
 nCount=0;
 bRegistered=FALSE;
 bTray=FALSE;
 //}}AFX_DATA_INIT
 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCaptureDlg::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CCaptureDlg)
 DDX_Control(pDX, IDC_KEY, m_Key);
 DDX_Check(pDX, IDC_CONTROL, m_bControl);
 DDX_Check(pDX, IDC_ALT, m_bAlt);
 DDX_Check(pDX, IDC_SHIFT, m_bShift);
 DDX_Text(pDX, IDC_PATH, m_Path);
 DDX_Text(pDX, IDC_NUMBER, m_Number);
 //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCaptureDlg, CDialog)
 //{{AFX_MSG_MAP(CCaptureDlg)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 ON_BN_CLICKED(ID_ABOUT, OnAbout)
 ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
 ON_BN_CLICKED(ID_CHANGE, OnChange)
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CCaptureDlg::OnInitDialog()
{
 CDialog::OnInitDialog();
 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);
  }
 }
 SetIcon(m_hIcon, TRUE); // Set big icon
 SetIcon(m_hIcon, FALSE); // Set small icon
 m_Key.SetCurSel(0);
 RegisterHotkey();
 CMenu* pMenu=GetSystemMenu(FALSE);
 pMenu->DeleteMenu(SC_MAXIMIZE,MF_BYCOMMAND);
 pMenu->DeleteMenu(SC_SIZE,MF_BYCOMMAND);
 pMenu->DeleteMenu(SC_RESTORE,MF_BYCOMMAND);
 return TRUE; // return TRUE unless you set the focus to a control
}

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

void CCaptureDlg::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() - cxIcon 1) / 2;
  int y = (rect.Height() - cyIcon 1) / 2;
  // Draw the icon
  dc.DrawIcon(x, y, m_hIcon);
 }
 else
 {
  CDialog::OnPaint();
 }
}

HCURSOR CCaptureDlg::OnQueryDragIcon()
{
 return (HCURSOR) m_hIcon;

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!