www.gusucode.com > VC++指定区域抓图、截屏小程序-源码程序 > VC++指定区域抓图、截屏小程序-源码程序/code/FBCommDlg.cpp
//Download by http://www.NewXing.com /* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 文件:FBCommDlg.cpp 版权:Firebird Software Workroom 保留 声明:本源程序的版权受《中华人民共和国著作权法》以及其 它相关法律和条约的保护。任何有机会得到本源程序的 个人和机构,未经作者明确授权,不得将本源程序用于 任何商业目的(直接的或间接的)。对于非商业目的的使 用 (包括复制、传播、编译和修改), 原则上没有特别 的限制条款,但请在相关文档中说明其来源,并尊重原 作者的署名权。 编写:秦传安(chings) 2000.5 联络:Tel:(0792)6323086 E_mail:chings@163.net @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ #include "fclstd.h" #include <cderr.h> #include "FBCommDlg.h" /* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ class CFileDlg @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ CFileDlg::CFileDlg() { memset(&m_OpenData,0,sizeof(OPENFILENAME)); m_OpenData.lStructSize = sizeof(OPENFILENAME); m_OpenData.lpfnHook = FileDlgProc; m_OpenData.Flags = OFN_EXPLORER|OFN_ENABLEHOOK; m_OpenData.lpstrFile = new char[MAX_PATH]; m_OpenData.lpstrFile[0] = '\0'; m_OpenData.nMaxFile = MAX_PATH; m_OpenData.lpstrFileTitle = new char[_MAX_FNAME]; m_OpenData.nMaxFileTitle = _MAX_FNAME; m_OpenData.lCustData = (DWORD)this; } CFileDlg::~CFileDlg() { if(m_OpenData.lpstrFile) delete [] m_OpenData.lpstrFile; if(m_OpenData.lpstrFileTitle) delete [] m_OpenData.lpstrFileTitle; } //##################################################################### UINT APIENTRY CFileDlg::FileDlgProc(HWND hdlg,UINT msg,WPARAM wParam,LPARAM lParam) { if(msg == WM_INITDIALOG) { LPOPENFILENAME pofn = (LPOPENFILENAME)lParam; CFileDlg* pDlg = (CFileDlg*)pofn->lCustData; if(!pDlg)return 0; pDlg->m_hWnd = hdlg; m_pWndList->Add(pDlg); CenterWindow(GetParent(hdlg)); return pDlg->WindowProc(msg,wParam,lParam); } CFileDlg* pDlg = (CFileDlg*)CFBWnd::FromHandle(hdlg); if(pDlg == NULL) return 0; else return pDlg->WindowProc(msg,wParam,lParam); } //##################################################################### BOOL CFileDlg::Create(CFBWnd *pOwner, LPTSTR szFilter, BOOL bOpen, DWORD Flags, LPTSTR szTemplate) { m_bFlag = bOpen; m_pOwner = pOwner; if(pOwner) m_OpenData.hwndOwner = pOwner->m_hWnd; m_OpenData.Flags |= Flags; m_OpenData.lpstrFilter = szFilter; if(szTemplate) { m_OpenData.Flags |= OFN_ENABLETEMPLATE; m_OpenData.lpTemplateName = szTemplate; if(pOwner) m_OpenData.hInstance = pOwner->GetInstance(); else m_OpenData.hInstance = GetModuleHandle(NULL); } return TRUE; } //##################################################################### int CFileDlg::DoModal() { BOOL bRet; if(m_bFlag) bRet = GetOpenFileName(&m_OpenData); else bRet = GetSaveFileName(&m_OpenData); if(bRet) return IDOK; return IDCANCEL; } /* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ class CColorDlg @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ CColorDlg::CColorDlg() { memset(&m_ccl,0,sizeof(CHOOSECOLOR)); m_ccl.lStructSize = sizeof(CHOOSECOLOR); m_ccl.lpCustColors = new COLORREF[16]; m_ccl.lpfnHook = ColorDlgProc; m_ccl.Flags = CC_RGBINIT|CC_ENABLEHOOK; m_ccl.lCustData = (LPARAM)this; } CColorDlg::~CColorDlg() { if(m_ccl.lpCustColors) delete [] m_ccl.lpCustColors; } //##################################################################### UINT APIENTRY CColorDlg::ColorDlgProc(HWND hdlg,UINT msg,WPARAM wParam,LPARAM lParam) { if(msg == WM_INITDIALOG) { LPCHOOSECOLOR pccl = (LPCHOOSECOLOR)lParam; CColorDlg* pDlg = (CColorDlg*)pccl->lCustData; if(!pDlg)return 0; pDlg->m_hWnd = hdlg; m_pWndList->Add(pDlg); CenterWindow(hdlg); return pDlg->WindowProc(msg,wParam,lParam); } CColorDlg* pDlg = (CColorDlg*)CFBWnd::FromHandle(hdlg); if(pDlg == NULL) return 0; else return pDlg->WindowProc(msg,wParam,lParam); } //##################################################################### BOOL CColorDlg::Create(CFBWnd* pOwner, COLORREF rgbInit, DWORD Flags, LPTSTR szTemplate) { m_pOwner = pOwner; if(pOwner) m_ccl.hwndOwner = pOwner->m_hWnd; m_ccl.Flags |= Flags; m_ccl.rgbResult = rgbInit; if(szTemplate) { m_ccl.lpTemplateName = szTemplate; m_ccl.Flags |= CC_ENABLETEMPLATE; if(pOwner) m_ccl.hInstance = (HWND)pOwner->GetInstance(); else m_ccl.hInstance = (HWND)GetModuleHandle(NULL); } return TRUE; } //##################################################################### int CColorDlg::DoModal() { if(ChooseColor(&m_ccl)) return IDOK; return IDCANCEL; } /* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ class CPrintDlg @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ CPrintDlg::CPrintDlg() { memset(&m_ptd,0,sizeof(PRINTDLG)); m_ptd.lStructSize = sizeof(PRINTDLG); m_ptd.lCustData = (DWORD)this; m_ptd.Flags = PD_ENABLEPRINTHOOK | PD_PAGENUMS; m_ptd.lpfnPrintHook = PrintDlgProc; m_ptd.nFromPage = 1; m_ptd.nToPage = 1; m_ptd.nMinPage = 1; m_ptd.nMaxPage = 1; } CPrintDlg::~CPrintDlg() { } //##################################################################### UINT APIENTRY CPrintDlg::PrintDlgProc(HWND hdlg,UINT msg,WPARAM wParam,LPARAM lParam) { if(msg == WM_INITDIALOG) { LPPRINTDLG ppd = (LPPRINTDLG)lParam; CPrintDlg* pDlg = (CPrintDlg*)ppd->lCustData; if(!pDlg)return 0; pDlg->m_hWnd = hdlg; m_pWndList->Add(pDlg); CenterWindow(hdlg); return pDlg->WindowProc(msg,wParam,lParam); } CPrintDlg* pDlg = (CPrintDlg*)CFBWnd::FromHandle(hdlg); if(pDlg == NULL) return 0; else return pDlg->WindowProc(msg,wParam,lParam); } //##################################################################### BOOL CPrintDlg::Create(CFBWnd* pOwner,DWORD Flags,LPTSTR szTemplate) { m_pOwner = pOwner; if(pOwner) m_ptd.hwndOwner = pOwner->m_hWnd; m_ptd.Flags |= Flags; if(szTemplate) { m_ptd.lpPrintTemplateName = szTemplate; m_ptd.Flags |= CC_ENABLETEMPLATE; if(pOwner) m_ptd.hInstance = pOwner->GetInstance(); else m_ptd.hInstance = GetModuleHandle(NULL); } return TRUE; } //##################################################################### int CPrintDlg::DoModal() { if(PrintDlg(&m_ptd)) return IDOK; if(CommDlgExtendedError() == PDERR_NODEVICES) MessageBox(NULL,"系统没有找到任何打印机,请检查打印机是否正确安装。","错误",MB_OK|MB_ICONWARNING); return IDCANCEL; }