摘要:代码:void CDlgQueryHistoryVideo::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult){ // TODO: 在此添加控件通知处理程序代码 NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR; if(pNMListView->iItem!=-1) { CString strtemp; strtemp.Format(_T("单击的是第%d行第%d列"),pNMListView->iItem, pNMListView->iSubItem); AfxMes
阅读全文
摘要:下拉框是让用户选择默认分屏数的,有1,2,6,7,8……等分屏方式。从COMBOX里取到值后,是CString类型的,需要转为整型值才能用:取值给控件增加变量CString类型的m_strNum变量。(注意:如果加int类型的变量,自动数据交换DDX后,得到的是选中的ITEM的index,从0开始)给COMBOX控件添加事件响应:CBN_SELCHANGE,在选中时更新数据在需要的地方取m_strNum的值即可//事件响应void CDlgSysParameter::OnCbnSelchangeComboDefnumchannels(){ UpdateData(TRUE);} 转化用到了_..
阅读全文
摘要:要求:CTreeCtrl的节点带有checkbox由上到下控件: 将一个节点被check后,其所有的子结点被check; 反之,uncheck,则所有子节点unchecked由下到上控制: 所有子节点被check后,这些节点的父结点被check; 如果子节点由*全被选中*状态,取消掉一个,则父节点应该置为*uncheck*图片说明:代码实现:void CClassTreeWnd::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult){ // TODO: 在此添加控件通知处理程序代码 CPoint pt; ::GetCursorPos(&p...
阅读全文
摘要:思路:1.在资源里新建菜单2.在类CMSPMSApp里载入3.在菜单的父窗口里添加消息:WM_CONTEXTMENU的响应函数.代码:载入:void CMSPMSApp::PreLoadState (){ GetContextMenuManager()->AddMenu (_T("My menu"), IDR_CONTEXT_MENU); // TODO: add another context menus here GetContextMenuManager()->AddMenu (_T("video channel"), IDR_CONT
阅读全文
摘要:思路:为包含该控件的对话框添加:WM_CTLCOLOR消息的响应函数HBRUSH CDialogColor::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd, nCtlColor); // TODO: Change any attributes of theDC here //设置显示字体 CFont * cFont=new CFont; cFont->CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,...
阅读全文
摘要:今天做的都是零碎活:增加工具栏提示格式为文字加"\n"再加文字。修改程序字体: LOGFONT lf; lf.lfOutPrecision= OUT_STROKE_PRECIS; lf.lfClipPrecision= CLIP_STROKE_PRECIS; lf.lfQuality = DRAFT_QUALITY; lf.lfPitchAndFamily= VARIABLE_PITCH|FF_MODERN; lf.lfHeight = 12; lf.lfWidth = 0; lf.lfEscapement = 0; lf.lfOrientation = 0; lf...
阅读全文
摘要:步骤:修改工具栏的三个地方: a.新增工具栏/设计对应图片 b.新增Controlbar变量(即工具栏),然后创建对象,再LoadToolbar c.对256色图片进行选择 d.增加停靠属性。EnableDocking() e.使之停靠。DockControlBar()代码:增加变量//在MainFrame里 CBCGPToolBar m_wndPlayCtlToolbar; CBCGPToolBar m_wndSettingToolbar;选择256色图片 CClientDC dc (this); BOOL bIsHighColor = dc.GetDeviceCaps (B...
阅读全文
摘要:树控件可以配上checkbox、icon和state icon,Overlay Image来实现其美观和状态表明。其中icon为每一个item的图标,state icon顾名思义则是根据item的状态来变化的。如图所示:紧挨着item为item自有的icon。可以在选中、未选中时变化。最左侧的为state icon,在状态变化时变化checkbox可看作state icon的一种,二者不能同时出现。checkbox必须在icon存在(即树控件有ImageList)的时候才能正确显示。overlay image覆盖的是icon如何使用状态图标 或者 Overlay Image,调用关系如下图所示
阅读全文
摘要:从MainFrame得到Document的指针://从MainFrame得到Document的成员 CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd; // Get the active MDI child window. CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame(); // or CMDIChildWnd *pChild = pFrame->MDIGetActive(); // Get the active view.
阅读全文
摘要:思路在程序启动的时候,加入设置托盘的操作。(封装成一个函数)修改程序的最小化、关闭按钮的响应,使其隐藏。而不再关闭。对托盘的图标加上一定的事件响应,如:左键双击还原,右键单击出现菜单在程序结束时,删除掉图标。依次放上代码:封装函数CMainFrame::SetTray(void),并在在CMainFrame::OnCreate()调用:注意需要将tnd的声明放在头文件里,作为全局变量,因为销毁时还要调用。bool CMainFrame::SetTray(void){ //在头文件里设定托盘通知数据结构 //NOTIFYICONDATA tnd; tnd....
阅读全文
摘要:本文转载自:http://www.cppblog.com/finehai/archive/2009/08/27/94578.aspx在MFC编程中经常会需要用到选择目录和选择文件的界面,以下总结一下本人常用的这两种对话框的生成方法:选择目录对话框 1 //选择目录按钮 2 void CDcPackerDlg::OnBnClickedDecgen() 3 { 4 char szPath[MAX_PATH]; //存放选择的目录路径 5 CString str; 6 7 ZeroMemory(szPath, sizeof(szPath)); 8 ...
阅读全文
摘要:void CTabWndTestView::OnInitialUpdate(){ CBCGPFormView::OnInitialUpdate(); CRect rectDummy(0,0,600,480); m_tabWnd.Create (CBCGPTabWnd::STYLE_3D_ONENOTE, rectDummy, this, 1, CBCGPTabWnd::LOCATION_TOP); m_wndView.Create(IDD_FORMVIEW_Test,&m_tabWnd); m_tabWnd.AddTab(&m_wndView,_T("原始数据&quo
阅读全文
摘要:界面:Tree Control被点击时的响应函数:void CDlgManageChannels::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult){ LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 //1.得到当前选中的项 HTREEITEM hSelected = m_treGroupStatus.GetSelectedItem(); //2.得到所所选项的文字 CString str1;
阅读全文
摘要:在Edit控件上面设置group属性(特别注意)——未验证在Spin控件上设置Auto Buddy 为 true ——自动和Edit Control绑定(自动关联控件为Tab序前一个)Set Buddy Integer 为 true ——调整整数Alignment 为 Right Align ——在Edit Control内靠右对齐,更美观Wrap设置为true ——若控件的增加或减小超过了结尾或开始,使数值可以“循环”。在OnInitDialog()中加入 CSpinButtonCtrl * pSpinCtrl = (CSpinButtonCtrl *)GetDlgItem(ID...
阅读全文
摘要:新建一个对话框并为其增加类后需要修改的地方:.h文件里:类定义,修改父类。class CDlgQueryHistoryStatus : public CBCGPDialog{ DECLARE_DYNAMIC(CDlgQueryHistoryStatus) ...}.cpp里MPLEMENT_DYNAMIC(CDlgQueryHistoryStatus, CBCGPDialog)宏里,修改父类。构造函数里调用父类的构造函数。CDlgQueryHistoryStatus::CDlgQueryHistoryStatus(CWnd* pParent /*=NULL*/): CBCGPDialog(..
阅读全文
摘要:一 修改工具栏图标:在工程的/res目录里,有toolbar256.bmp与toolbar.bmp两张图片。后者实现所有功能:确定定各图标显示先后顺序关联一个图标到特定的响应函数(通过将其ID设置与某个菜单项一样实现)前者用于显示从名字可以看出来,256位真彩色,显示效果好一些。因此用于最终程序界面的显示。制作图标用到了软件IconWorkshop.具体的修改步骤为:toolbar.bmp修改大小修改:在属性栏里修改图标的height和width顺序修改:通过拖拽,可以调动各菜单的先后顺序与分组情况。重绘图标:便于与toolbar256.bmp对应,可以这些图标分别写上有意义的标识符。关联响应
阅读全文
摘要:需要完成功能:根据用户的选择来安排几画面显示。遍历:用递归来完成。状态检验:GetCheck()1.首先定义递归函数,对每个叶结点进行检验,若被选中,则记录变量自加1.int CMainFrame::TreeTravesal(HTREEITEM hStart){ HTREEITEM hChildItem = NULL; AfxMessageBox(m_wndChannelBrowser.m_wndTree.GetItemText(hStart)); if (m_wndChannelBrowser.m_wndTree.ItemHasChildren(hStart)) { hChildIte...
阅读全文
摘要:原理:记录原来客户区的长和宽,用现在的客户区的长和宽比上原来的。得到一个比例系统。依据这个比例系统来放大/缩小控件的大小(通过改变窗口矩形的坐标)。实现:void CMSVideoMonitorView::OnSize(UINT nType, int cx, int cy){ CFormView::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码 if(m_bStaticIsInitialized && m_cStatic0.m_hWnd != NULL)//判断是否为真,为真,表示控件已经被初始化(创建),可以进行操作。/* //否则
阅读全文
摘要:目的:双击某一通道,全屏显示。再次双击,回复到全屏前的分屏方式。并能保持该通道的外框存在,不丢失。在双击事件响应函数里加入如下代码,其中:重绘区域选用了ValidateRect()函数,值得注意。采用FromHandle()函数,由Handle得到窗口指针的用法值得注意。void CMSVideoMonitorView::OnStnDblclickStatic0(){ // TODO: 在此添加控件通知处理程序代码 //由点得到控件HANDLE,再得到窗口的指针 CPoint Pt; GetCursorPos(&Pt); HWND hCurrentDbClicked = ::Windo
阅读全文
摘要:参考资料:http://www.vckbase.com/vckbase/vckbase10/vc/nonctrls/misc_21/1021002.htm步骤1:在CxxxDoc中添加变量CRectTracker m_rectBound;步骤2:在static的单击事件响应函数中加入:其中Invalidate()函数的调用时机值得分析。void CSwitchChannelView::OnStnClickedStatic0(){ //TODO: 在此添加控件通知处理程序代//////////////////////////////////////////////////////////////
阅读全文