bool CWHService::SetClipboardString(LPCTSTR pszString)
{
//变量定义
HANDLE hData=NULL;
BOOL bOpenClopboard=FALSE;
//执行逻辑
__try
{
//打开拷贝
bOpenClopboard=OpenClipboard(AfxGetMainWnd()->m_hWnd);
if (bOpenClopboard==FALSE) __leave;
//清空拷贝
if (EmptyClipboard()==FALSE) __leave;
//申请内存
HANDLE hData=GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,CountStringBuffer(pszString));
if (hData==NULL) __leave;
//复制数据
lstrcpy((LPTSTR)GlobalLock(hData),pszString);
GlobalUnlock(hData);
//设置数据
#ifndef _UNICODE
::SetClipboardData(CF_TEXT,hData);
#else
::SetClipboardData(CF_UNICODETEXT,hData);
#endif
}
//终止程序
__finally
{
//释放内存
if (hData!=NULL) GlobalUnlock(hData);
//关闭拷贝
if (bOpenClopboard==TRUE) CloseClipboard();
//错误判断
if (AbnormalTermination()==TRUE)
{
ASSERT(FALSE);
}
}
return true;
}
//配置函数
BOOL CCameraControl::OnInitDialog()
{
__super::OnInitDialog();
//设置标题
SetWindowText(TEXT("视频拍摄"));
//设置资源
AfxSetResourceHandle(GetModuleHandle(NULL));
//获取大小
CRect rcClient;
m_CameraControl.GetClientRect(&rcClient);
//创建窗口
DWORD dwStyle=WS_CHILD|WS_BORDER;
m_hWndCamera=capCreateCaptureWindow(NULL,dwStyle,0,0,rcClient.Width(),rcClient.Height(),m_CameraControl,IDC_CAMERA_WND);
//连接设备
if (capDriverConnect(m_hWndCamera,0)==TRUE)
{
//获取性能
capDriverGetCaps(m_hWndCamera,&m_CapDrivercaps,sizeof(m_CapDrivercaps));
//结果判断
if (m_CapDrivercaps.fCaptureInitialized==TRUE)
{
//设置变量
m_bInit=true;
//设置属性
capPreview(m_hWndCamera,TRUE);
capPreviewRate(m_hWndCamera,30);
//显示窗口
::ShowWindow(m_hWndCamera,SW_SHOW);
//获取状态
capGetStatus(m_hWndCamera,&m_CapStatus,sizeof(m_CapStatus));
}
}
//设置控件
if (m_bInit==true)
{
m_btCameraDict.EnableWindow(TRUE);
m_StringControl.SetWindowText(TEXT("摄像头初始化成功"));
}
else
{
//设置信息
m_StringControl.SetWindowText(TEXT("没有安装摄像头或者摄像头初始化失败"));
}
return TRUE;
}
VOID CCameraControl::OnBnClickedCameraDict()
{
//截获图像
capGrabFrame(m_hWndCamera);
capEditCopy(m_hWndCamera);
//拷贝图像
if (OpenClipboard()==FALSE)
{
ASSERT(FALSE);
return;
}
//销毁图像
if (m_ImageResult.IsNull()==false)
{
m_ImageResult.Destroy();
}
//拷贝数据
HBITMAP hImageResult=(HBITMAP)CopyImage(GetClipboardData(CF_BITMAP),IMAGE_BITMAP,0,0,LR_COPYRETURNORG);
//结果处理
if (hImageResult!=NULL)
{
//附加数据
m_ImageResult.Attach(hImageResult);
//清空剪切
EmptyClipboard();
CloseClipboard();
//设置按钮
m_btOk.EnableWindow(TRUE);
m_btRepeat.EnableWindow(TRUE);
m_btCameraDict.EnableWindow(FALSE);
return;
}
return;
}