最近看了《VC++技术内幕》,做些源代码的简要摘抄(2)

 各种常用控件的使用就不做摘抄了,

感觉随用随查就行,以后如果天天用了,那就要熟悉了。

1. 继承CFileDialog
.h

#pragma once


// CSpecialFileDialog dialog

class CSpecialFileDialog : public CFileDialog
{
 DECLARE_DYNAMIC(CSpecialFileDialog)

public:
 CString m_strFilename;
 BOOL m_bDeleteAll;

// Construction
public:
 CSpecialFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
  LPCTSTR lpszDefExt = NULL,
  LPCTSTR lpszFileName = NULL,
  DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  LPCTSTR lpszFilter = NULL,
  CWnd* pParentWnd = NULL);
 virtual ~CSpecialFileDialog();

// Dialog Data
 enum { IDD = IDD_FILESPECIAL };

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

 DECLARE_MESSAGE_MAP()
public:
 virtual BOOL OnInitDialog();
 afx_msg void OnBnClickedDelete();
};
-------------------------------------------------------------------

.cpp

// SpecFileDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Ex07b.h"
#include "SpecFileDlg.h"


// CSpecialFileDialog dialog

IMPLEMENT_DYNAMIC(CSpecialFileDialog, CFileDialog)
CSpecialFileDialog::CSpecialFileDialog(BOOL bOpenFileDialog,
  LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags,
  LPCTSTR lpszFilter, CWnd* pParentWnd)
 : CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName,
  dwFlags, lpszFilter, pParentWnd)
{
 m_ofn.Flags |= OFN_ENABLETEMPLATE;
 m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_FILESPECIAL);
 m_ofn.lpstrTitle = "Delete File";
 m_bDeleteAll = FALSE;
}

CSpecialFileDialog::~CSpecialFileDialog()
{
}

void CSpecialFileDialog::DoDataExchange(CDataExchange* pDX)
{
 CFileDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CSpecialFileDialog, CFileDialog)
 ON_BN_CLICKED(IDC_DELETE, OnBnClickedDelete)
END_MESSAGE_MAP()


// CSpecialFileDialog message handlers

BOOL CSpecialFileDialog::OnInitDialog()
{
 BOOL bRet = CFileDialog::OnInitDialog();
 if (bRet == TRUE) {
  GetParent()->GetDlgItem(IDOK)->SetWindowText("Delete");
 }

    HICON hIcon = AfxGetApp()->LoadIcon(IDI_MYICON);
    GetParent()->SetIcon(hIcon, TRUE);        // Set big icon
    GetParent()->SetIcon(hIcon, FALSE);       // Set small icon

 return bRet;
}

void CSpecialFileDialog::OnBnClickedDelete()
{
 m_bDeleteAll = TRUE;
 // 0x480 is the child window ID of the File Name edit control
 //  (as determined by SPYXX)
 GetParent()->GetDlgItem(0x480)->GetWindowText(m_strFilename);
 GetParent()->SendMessage(WM_COMMAND, IDCANCEL);
}

你可能感兴趣的:(最近看了《VC++技术内幕》,做些源代码的简要摘抄(2))