学习MFC一周总结:为程序设置全局热键、在工具栏添加组合框(截图软件,功能添加)(附:完整截图软件源码)(20150505)
使用开发工具:VS 2012;
学习日期:20150504;
//--------------------------------------------------------
此截图软件源码下载地址:截图软件-My
//--------------------------------------------------------
第一步:设置全局热键
Tips:虽然可以通过资源视图中的 accelerator(加速键)设置快捷键。但是要想在程序后台运行时,使用快捷方式,则需要注册热键。
1 // 注册全局热键 , 窗口创建时就可以注册,此处是在Oncreate中HOTKY_PRTSC是自定义的宏(name) 2 RegisterHotKey( this->m_hWnd , HOTKY_PRTSC , MOD_CONTROL | MOD_ALT , 'A' ); 3 4 5 //---------------------------------------- 6 //可以在窗口关闭时,释放此热键 7 //注销全局热键 8 ::UnregisterHotKey( m_hWnd , HOTKY_PRTSC );
第二步:在工具栏添加组合框(此处用于,选择画笔宽度)
此处认识一个新的MFC类CComboBox;其封装了Windows组合框。
1 //int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 2 //CToolBar m_wndToolBar; 此变量为MFC生成,定义在主框架的头文件中 3 //创建下拉列表框,以供选择笔宽 4 //创建分隔线 5 CRect rect; 6 m_wndToolBar.GetItemRect( 12 , &rect ); 7 rect.top += 10;m_wndToolBar.SetButtonInfo( 12 , ID_TOOLCOMBOBOX , TBBS_SEPARATOR , 100 ); 8 //初始化下拉列表框 9 10 rect.left += 5; 11 m_comboBox.Create( WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST , rect , &m_wndToolBar , ID_COMBOBOX ); 12 m_comboBox.AddString( _T("一号线") ); 13 m_comboBox.AddString( _T("二号线") ); 14 m_comboBox.AddString( _T("三号线") ); 15 ////选择一项,并对每一项赋值 16 m_comboBox.SetCurSel( 0 ); //选中一个默认项 17 m_comboBox.SetItemData( 0 , 2 ); 18 m_comboBox.SetItemData( 1 , 4 ); 19 m_comboBox.SetItemData( 2 , 6 );
工程中,我们添加了一个新类,继承了CComboBox,并由这个新类接收触发此组合框控件所发出的消息;消息响应函数如下:
1 //组合框的消息响应函数 2 void CMyComboBox::OnCbnCloseup() 3 { 4 // TODO: 在此添加控件通知处理程序代码 5 //获得画笔宽度 6 CMainFrame * pFrame = ( CMainFrame * )AfxGetMainWnd(); 7 CNotifyIconView * pView = (CNotifyIconView *)pFrame->GetActiveView(); 8 pView->m_nWidth = this->GetItemData( pFrame->m_comboBox.GetCurSel() ); 9 }

浙公网安备 33010602011771号