学习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 }

 

posted @ 2015-05-09 20:35  netosoul  阅读(263)  评论(0)    收藏  举报