/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
文件:MainWnd.cpp
版权:Firebird Software Workroom 保留
声明:本源程序的版权受《中华人民共和国著作权法》以及其
它相关法律和条约的保护。任何有机会得到本源程序的
个人和机构,未经作者明确授权,不得将本源程序用于
任何商业目的(直接的或间接的)。对于非商业目的的使
用 (包括复制、传播、编译和修改), 原则上没有特别
的限制条款,但请在相关文档中说明其来源,并尊重原
作者的署名权。
编写:秦传安(chings) 2000.5
联络:Tel:(0792)6323086 E_mail:chings@163.net
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
#include "fclstd.h"
#include "resource.h"
#include "ScreenCap.h"
#include "FBCommDlg.h"
#include "CapForm.h"
#include "ResizeDlg.h"
#include "SetingDlg.h"
#include "MainWnd.h"
#include "about.h"
#define IDW_TABCTRLBAR 0xE851
#define IDW_COOLBAR 0xE852
#define ID_TRAYICON 9201//托盘图标的标识符
#define ID_HOTKEY 9202//热键的标识符
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMainWnd::CMainWnd()
{
m_WndPlm.flags = WPF_RESTORETOMAXIMIZED;
m_WndPlm.length = sizeof(WINDOWPLACEMENT);
m_bIconMode = FALSE;//托盘图标的标志,TRUE:图标启动;FALSE:未启动
m_nNewCount = 0;
m_strDefDir[0] = '\0';
m_strBackFile[0] = '\0';
m_bHotkey = FALSE;
}
CMainWnd::~CMainWnd()
{
}
////////////////////////////////////////////////////////////////////////////////////////
LRESULT CMainWnd::WindowProc(UINT msg,WPARAM wParam,LPARAM lParam)
{
LRESULT lResult = 0;
switch(msg)
{
case FBNM_TRAYICON://托盘图标的消息标识符
{
if(wParam != ID_TRAYICON)//不是本程序定义的托盘图标,则返回。
return 0;
if(lParam == WM_RBUTTONUP)//右键,弹出菜单
m_TrayIcon.PopupMenu();
else if(lParam == WM_LBUTTONDBLCLK)//左键双击,开关主窗口
{
if(IsShow())
ShowWindow(m_hWnd,SW_HIDE);
else
ShowWindow(m_hWnd,SW_SHOW);
}
lResult = 1;
}
break;
case WM_SHOWWINDOW:
ShowStateChange((BOOL)wParam);
break;
//用户单击最小化按钮,则启动托盘图标。
case WM_SYSCOMMAND:
if(wParam == SC_MINIMIZE)
{
ShowWindow(m_hWnd,SW_HIDE);
if(!m_bIconMode)
{
m_bIconMode = TRUE;
m_TrayIcon.SetIcon(LoadIcon(GetInstance(),
MAKEINTRESOURCE(IDI_MAINICON)));
m_TrayIcon.Open();
m_wndToolBar.CheckedButton(ID_ICONMODE,TRUE);
}
}
else
lResult = DefWindowProc(m_hWnd,msg,wParam,lParam);
break;
case WM_DRAWCLIPBOARD:
{
int fmt = CountClipboardFormats();
if(fmt == CF_BITMAP)
{
m_wndToolBar.EnableButton(ID_EDITPASTE,TRUE);
m_wndMenuBar.EnableMenuItem(ID_EDITPASTE,TRUE);
}
else
{
m_wndToolBar.EnableButton(ID_EDITPASTE,FALSE);
m_wndMenuBar.EnableMenuItem(ID_EDITPASTE,FALSE);
}
}
break;
case WM_CLOSE:
GetWindowPlacement(m_hWnd,&m_WndPlm);
case WM_HOTKEY:
if(wParam == ID_HOTKEY)
OnCapScreen();
break;
default:
lResult = CFBFrameWnd::WindowProc(msg,wParam,lParam);
break;
}
return lResult;
}
////////////////////////////////////////////////////////////////////////////////////////
BOOL CMainWnd::OnCreate()
{
//创建CoolBar,用于加载工具栏和菜单栏。
if(!m_wndCoolBar.Create(NULL,this,CBS_BORDER_RECT|CBS_GRIPPER,26,26,IDW_COOLBAR))
return FALSE;
//创建并加载菜单栏。
if(!m_wndMenuBar.Create(this,NULL,IDW_MAINMENU))
return FALSE;
HMENU hMenu = LoadMenu(GetInstance(), MAKEINTRESOURCE(IDM_MAINMENU));
if(!m_wndMenuBar.LoadMenu(hMenu,FALSE))
return FALSE;
CB_BANDINFO cbif;
cbif.bShow = TRUE;
cbif.cxMinSize = 300;
cbif.cyMinSize = 20;
cbif.nLines = 0;
cbif.hWnd = m_wndMenuBar.m_hWnd;
cbif.uID = IDM_MAINMENU;
cbif.cchText = 0;
m_wndCoolBar.AddBand(&cbif);
//创建并加载工具栏
if(!m_wndToolBar.Create(this,NULL,IDW_TOOLBAR))
return FALSE;
if(!m_wndToolBar.LoadToolBar(IDT_TOOLBAR))
return FALSE;
cbif.cchText = 0;
cbif.cxMinSize = 300;
cbif.cxText = NULL;
cbif.cyMinSize = 22;
cbif.hWnd = m_wndToolBar.m_hWnd;
cbif.nLines = 1;
cbif.uID = IDW_TOOLBAR;
m_wndCoolBar.AddBand(&cbif);
m_wndCoolBar.Docking(CB_DOCK_TOP);
//创建状态栏
if(!m_wndStatusBar.Create(this,IDW_STATUSBAR))
return FALSE;
int pParts[4];
pParts[0] = 180;
pParts[1] = 240;
pParts[2] = 300;
pParts[3] = 420;
m_wndStatusBar.SetParts(4,pParts);
m_wndStatusBar.SetText(0,"就绪");
//创建客户视图
if(!m_wndChildView.Create(this,IDW_TABCTRLBAR,CCS_TOP|TCS_FOCUSNEVER))
return FALSE;
HICON hIcon = LoadIcon(GetInstance(),MAKEINTRESOURCE(IDI_MAINICON));
m_TrayIcon.Create(this,ID_TRAYICON,hIcon,"屏幕捕快");
m_TrayIcon.SetMenu(IDR_POPUP);
CScreenCap* pApp = GetApp();
if(!pApp->RegGetBinary("Config","Setings",(LPBYTE)&m_setings,sizeof(APP_SETINGS)))
{
m_setings.bAutoShowWnd = TRUE;
m_setings.chKey = 'K';
m_setings.clrGradHi = RGB(203,185,156);
m_setings.clrGradLo = RGB(158,139,117);
m_setings.clrViewBack = RGB(0,128,128);
m_setings.nDefaultFmt = 0;
m_setings.nStartMode = 0;
m_setings.nToolBarBackMod = 1;
m_setings.uHotkeyMod = MOD_CONTROL;
m_setings.nGradStyle = 3;
}
if(!pApp->RegGetString("Config","DefaultSaveDir",m_strDefDir,MAX_PATH))
lstrcpy(m_strDefDir,"c:\\windows\\temp\\");
if(m_setings.nToolBarBackMod == 1)
m_wndCoolBar.UseGradientBk(m_setings.clrGradLo,m_setings.clrGradHi,m_setings.nGradStyle);
else if(m_setings.nToolBarBackMod == 2)
{
if(pApp->RegGetString("Config","ToolBarBkFile",m_strBackFile,MAX_PATH))
{
HBITMAP hbmp = (HBITMAP)LoadImage(NULL,m_strBackFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
if(hbmp)
m_wndCoolBar.SetBkBitmap(hbmp);
else
m_setings.nToolBarBackMod = 0;
}
else
m_setings.nToolBarBackMod = 0;
}
m_wndChildView.m_clrBack = m_setings.clrViewBack;
SetClipboardViewer(m_hWnd);
InitUI();
m_bHotkey = RegisterHotKey(m_hWnd,ID_HOTKEY,
m_setings.uHotkeyMod,m_setings.chKey);
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////////////
void CMainWnd::InitUI()
{
m_wndToolBar.EnableButton(ID_FILECLOSE,FALSE);
m_wndToolBar.EnableButton(ID_FILE_CLOSEALL,FALSE);
m_wndToolBar.EnableButton(ID_FILESAVE,FALSE);
m_wndToolBar.EnableButton(ID_FILE_SAVEAS,FALSE);
m_wndToolBar.EnableButton(ID_FILEPRINT,FALSE);
m_wndToolBar.EnableButton(ID_EDITCOPY,FALSE);
m_wndToolBar.EnableButton(ID_EDITCUT,FALSE);
m_wndToolBar.EnableButton(ID_SELECT,FALSE);
m_wndToolBar.EnableButton(ID_CROP,FALSE);
m_wndToolBar.EnableButton(ID_RESIZE,FALSE);
m_wndMenuBar.EnableMenuItem(ID_FILECLOSE,FALSE);
m_wndMenuBar.EnableMenuItem(ID_FILE_CLOSEALL,FALSE);
m_wndMenuBar.EnableMenuItem(ID_FILESAVE,FALSE);
m_wndMenuBar.EnableMenuItem(ID_FILE_SAVEAS,FALSE);
m_wndMenuBar.EnableMenuItem(ID_FILEPRINT,FALSE);
m_wndMenuBar.EnableMenuItem(ID_EDITCOPY,FALSE);
m_wndMenuBar.EnableMenuItem(ID_EDITCUT,FALSE);
m_wndMenuBar.EnableMenuItem(ID_SELECT,FALSE);
m_wndMenuBar.EnableMenuItem(ID_CROP,FALSE);
m_wndMenuBar.EnableMenuItem(ID_RESIZE,FALSE);
m_wndMenuBar.EnableMenuItem(ID_FILEPRINTPREVIEW,FALSE);
m_wndMenuBar.EnableMenuItem(ID_FILEPRINTSETUP,FALSE);
m_wndToolBar.CheckedButton(ID_SELECT,FALSE);
m_wndMenuBar.CheckMenuItem(ID_SELECT,FALSE);
m_wndStatusBar.SetText(0,"就绪");
m_wndStatusBar.SetText(1,"");
m_wndStatusBar.SetText(2,"");
m_wndStatusBar.SetText(3,"");
}
///////////////////////////////////////////////////////////////////////////////////////
void CMainWnd::UpdateUI()
{
CImageView* pImg = (CImageView*)m_wndChildView.GetActiveView();
if((!pImg)? TRUE : pImg->IsEmpty())
{
InitUI();
return;
}
m_wndToolBar.EnableButton(ID_FILECLOSE,TRUE);
m_wndToolBar.EnableButton(ID_FILE_CLOSEALL,TRUE);
m_wndToolBar.EnableButton(ID_FILESAVE,TRUE);
m_wndToolBar.Enable
没有合适的资源?快使用搜索试试~ 我知道了~
捕捉屏幕图像,支持全屏/指定区/窗口捕捉
共56个文件
h:25个
cpp:21个
ico:3个
4星 · 超过85%的资源 需积分: 50 44 下载量 113 浏览量
2008-09-13
12:52:30
上传
评论
收藏 131KB ZIP 举报
温馨提示
捕捉屏幕图像,支持全屏/指定区/窗口捕捉,捕捉屏幕图像,支持全屏/指定区/窗口捕捉,捕捉屏幕图像,支持全屏/指定区/窗口捕捉
资源推荐
资源详情
资源评论
收起资源包目录
screen_cap.zip (56个子文件)
screen_cap
FBTabCtrl.cpp 6KB
ScreenCap.rc 15KB
TrayIcon.h 1KB
CapForm.h 1KB
resource.h 4KB
ScreenCap.exe 92KB
ScreenCap.cpp 4KB
ScreenCap.dsp 7KB
FBDialog.h 2KB
FBCtrls.cpp 17KB
ImageView.h 2KB
FBCtrls.h 9KB
FileDlg.cpp 6KB
FBView.h 1KB
FBCommDlg.h 3KB
ResizeDlg.h 1KB
fclstd.h 383B
TrayIcon.cpp 3KB
stdfbx.h 383B
CapForm.cpp 3KB
ChildView.cpp 3KB
fbextapi.h 2KB
FBFrameWnd.cpp 3KB
FileDlg.h 1KB
FBCtrlBar.h 7KB
ScreenCap.h 1KB
MainWnd.cpp 25KB
ChildView.h 1KB
about.cpp 4KB
FBWnd.cpp 9KB
FBApp.h 2KB
SetingDlg.h 1KB
fbxres.h 1KB
SetingDlg.cpp 12KB
FBWnd.h 4KB
FBCoolBar.cpp 11KB
FBCtrlBar.cpp 15KB
FBDialog.cpp 2KB
about.h 1KB
FBApp.cpp 9KB
res
scrcap01.ico 318B
icon2.ico 318B
cursor2.cur 326B
Main.ico 318B
Toolbar.bmp 2KB
cursor1.cur 326B
ResizeDlg.cpp 4KB
fclres.h 1KB
Capture.h 701B
FBCommDlg.cpp 7KB
fbextapi.cpp 6KB
MainWnd.h 3KB
ScreenCap.dsw 541B
ImageView.cpp 13KB
FBView.cpp 3KB
FBFrameWnd.h 1KB
共 56 条
- 1
资源评论
- YLDYLG2012-10-27代码比较容易看懂,用于学习还是可以的。
- liuxt2015-10-12挺好的例子,对学习很有帮助
andyhanjun
- 粉丝: 2
- 资源: 37
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功