您的位置:首页 > 编程语言

MFC 界面编程

2011-09-16 18:32 323 查看
在状态兰上的左侧加上向左滚动的文字

void CMainFrame::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

static int strID = 0; //字符索引

//达到滚动字幕的末尾

if (strID >= (m_text.GetLength() - 1))

{

strID = 0;

}

m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_SEPARATOR), ((LPCSTR) m_text) + strID);

//后移显示的字幕,由于汉字占两位,所以+2

strID = strID + 1;

CFrameWnd::OnTimer(nIDEvent);

}

修改菜单上的文字为位图

m_bitmap.LoadBitmap(IDB_BITMAP1);

CMenu * pMenu=GetMenu();

pMenu->GetSubMenu(4)->ModifyMenu(ID_MENU_BMP, MF_BYCOMMAND, ID_MENU_BMP, &m_bitmap);

修改菜单为复选菜单

void CMainFrame::OnMenu1()

{

m_selected = !m_selected;//更改菜单的选择状态

}

void CMainFrame::OnUpdateMenu1(CCmdUI* pCmdUI)

{

pCmdUI->SetCheck(m_selected);//设置显示菜单的选择状态

}

鼠标点击显示弹出菜单

//单击鼠标右键时的响应函数

void CContextMenuView::OnRButtonDown(UINT nFlags, CPoint point)

{

CMenu contextMenu;

contextMenu.LoadMenu(IDR_CONTEXTMENU);//加载菜单

CMenu *pPopupMenu=contextMenu.GetSubMenu(0);//获得弹出菜单指针

ClientToScreen(&point);//转换鼠标坐标

//弹出菜单

pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());

CView::OnRButtonDown(nFlags, point);

}

禁用菜单选项

EnableMenu

/////////////////////////////////////////////////////////////////////////////

// CEnableMenuJQView message handlers

void CEnableMenuJQView::OnJQstep1()

{

// TODO: Add your command handler code here

MessageBox("step1 finished!","infor",MB_OKCANCEL);

m_selected=!m_selected;

}

void CEnableMenuJQView::OnJQstep2()

{

// TODO: Add your command handler code here

}

void CEnableMenuJQView::OnUpdateJQstep2(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

pCmdUI->Enable(m_selected);

}

全屏显示

void CMainFrame::FullScreen()

{

GetWindowPlacement(&m_oldWinPos);
// 得到当前窗口的位置

CRect winRect;
// 窗口区域

GetWindowRect(&winRect);
// 得到窗口区域

CRect rectClient;

RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &rectClient); // 全屏时隐藏所有的控制条

ClientToScreen(&rectClient);
// 将客户坐标映射成屏幕坐标

//获取屏幕分辨率

int fullWidth = GetSystemMetrics(SM_CXSCREEN);

int fullHeight = GetSystemMetrics(SM_CYSCREEN);

//得到全屏显示的窗口位置

m_fullScreenRect.left = winRect.left - rectClient.left;

m_fullScreenRect.top = winRect.top - rectClient.top;

m_fullScreenRect.right = winRect.right - rectClient.right + fullWidth;

m_fullScreenRect.bottom= winRect.bottom - rectClient.bottom + fullHeight;

// 进入全屏显示状态

m_fullScreenFlag = TRUE;
// 设置全屏标志

WINDOWPLACEMENT tmp;

tmp.length = sizeof(WINDOWPLACEMENT);

tmp.flags = 0;

tmp.showCmd = SW_SHOWNORMAL;

tmp.rcNormalPosition = m_fullScreenRect;

SetWindowPlacement(&tmp);
// 将窗口设置到m_fullScreenRect位置上

}

//This member function is called by the framework to allow your //application to handle a Windows message.

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)

{

if(m_fullScreenFlag)

{

lpMMI->ptMaxTrackSize.x = m_fullScreenRect.Width();
//设置最大跟踪宽度

lpMMI->ptMaxTrackSize.y = m_fullScreenRect.Height();
//设置最大跟踪高度

}

CMDIFrameWnd::OnGetMinMaxInfo(lpMMI);

}

// 结束程序窗口全屏显示,恢复窗口原来大小

void CMainFrame::EndFullScreen()

{

if(m_fullScreenFlag)

{

m_fullScreenFlag = FALSE;
// 设置全屏状态为FALSE

SetWindowPlacement(&m_oldWinPos);
// 退出全屏显示, 恢复原窗口显示

}

}

// 得到当前窗口的现实状态

BOOL CMainFrame::GetScreenState()

{

return m_fullScreenFlag;

}

//对按键进行处理

void CFullScreenMDIView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{

if(nChar == VK_F11)

{

// 获取主框架窗口的指针

CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;

if(pFrame->GetScreenState()) // 如果现在是全屏状态

{

// 调用主窗口类的自定义函数 EndFullScreen,退出全屏显示状态

pFrame->EndFullScreen();

}

else // 不是全屏状态

{

// 调用主窗口类的自定义函数 FullScreen ,进入全屏显示状态

pFrame->FullScreen();

}

}

CView::OnKeyDown(nChar, nRepCnt, nFlags);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: