界面里面create一个按钮,名字“退出”,响应exit(0);界面一开始全屏(只有视
图无框架的那种),按esc退出全屏,然后点击全屏再次进入全屏,这时点击“退出”,会经常出现内
存错误,也少数几次能正常退出。其他按钮按了却没有这个问题,试过debug和realse模式,无果;求教版友。谢谢~
图无框架的那种),按esc退出全屏,然后点击全屏再次进入全屏,这时点击“退出”,会经常出现内
存错误,也少数几次能正常退出。其他按钮按了却没有这个问题,试过debug和realse模式,无果;求教版友。谢谢~
解决方案 »
- 如何使用mciSendCommand()函数来查询光驱是打开还是关闭的?
- 请教在COM中读写XML
- ddd
- 又是一个VC链接时的问题,请大侠解答。(在线等)
- 关于时间的显示
- 请教:如何存储和读取Listbox控件里的各项字符串?最好用例说明一下,多谢了!
- 一个ado连接数据库打开记录集的问题
- 如何获取计算机的名称,描述,IP地址和MAC地址?
- 各位大侠,小女子是大三一学生,初学VB,请教各位:在向数据库中追加一条记录后,要判断记录中“员工编号”是否唯一,才能将新增的记录保存到数据库中,如何做到,我用的VB+ACCESS,连接数据库用ADO!
- 这两种函数调用有什么区别?
- 对软件项目的搞笑又深刻的理解
- 关于图片二值处理的问题
在view的oncreate里面创建的
view里面退出按键的响应函数
void CFullScreenView::OnExit()
{
exit(0);
//PostQuitMessage(0);
}frame框架的全屏函数
void CMainFrame::OnViewFullScreen()
{
if(m_bIsFull)
{
return;
}
m_bIsFull=TRUE; m_bViewTool=m_wndToolBar.IsWindowVisible();
m_bViewStatus=m_wndStatusBar.IsWindowVisible();
//记录要显示的视图当前位置
CView *pView=this->GetActiveView();
pView->LockWindowUpdate();
pView->GetWindowPlacement(&m_plcView);
pView->UnlockWindowUpdate(); //记录主框架的当前位置
this->LockWindowUpdate();
this->GetWindowPlacement(&m_plcWnd);
this->UnlockWindowUpdate(); //隐藏工具栏和状态栏
ShowControlBar(&m_wndToolBar,FALSE,FALSE);
ShowControlBar(&m_wndStatusBar,FALSE,FALSE); //求得全屏大小
::SystemParametersInfo(SPI_GETWORKAREA,0,&m_rectDesktop,0);
m_rectDesktop.right=::GetSystemMetrics(SM_CXSCREEN);
m_rectDesktop.bottom=::GetSystemMetrics(SM_CYSCREEN);
m_rectDesktop.right+=m_rectDesktop.left;
m_rectDesktop.bottom+=m_rectDesktop.top; //计算以全屏为客户区时的窗体大小
CRect rectHold=m_rectDesktop;
::AdjustWindowRect(&m_rectDesktop,this->GetStyle(),TRUE);
m_rectDesktop.bottom+=::GetSystemMetrics(SM_CYBORDER);
//设置主框架窗体位置和大小
WINDOWPLACEMENT plcHold=m_plcView;
plcHold.showCmd=SW_SHOWNORMAL;
plcHold.rcNormalPosition=m_rectDesktop;
this->LockWindowUpdate();
this->SetWindowPlacement(&plcHold);
this->UnlockWindowUpdate(); //设置客户区窗体的位置和大小
plcHold.rcNormalPosition=rectHold;
::AdjustWindowRect(&(plcHold.rcNormalPosition),pView->GetStyle(),FALSE);
pView->LockWindowUpdate();
pView->SetWindowPlacement(&plcHold);
pView->UnlockWindowUpdate();
}
view类里面按esc来响应下面的函数
void CFullScreenView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(nChar==VK_ESCAPE)
{
((CMainFrame*)AfxGetMainWnd())->EscapeFullScreen();
return;
}
CView::OnChar(nChar, nRepCnt, nFlags);
}退出全屏函数如下:
void CMainFrame::EscapeFullScreen
{
if(!m_bIsFull)
{
return;
}
m_bIsFull=FALSE;
//AfxMessageBox("escape");
//恢复主窗体
CView *pView=this->GetActiveView();
pView->LockWindowUpdate();
pView->SetWindowPlacement(&m_plcView);
pView->UnlockWindowUpdate();
//恢复主框架窗体
LockWindowUpdate();
SetWindowPlacement(&m_plcWnd);
UnlockWindowUpdate();
ShowControlBar(&m_wndToolBar,m_bViewTool,FALSE);
ShowControlBar(&m_wndStatusBar,m_bViewStatus,FALSE); }执行顺序依次是OnViewFullScreen()、EscapeFullScreen、OnViewFullScreen(),这时按下退出键就出现问题。
postquitmessage用了不出现问题,谢谢ls的回答~期待对exit的解释,多谢各位!