📄 read.cgi-read=9884.htm
字号:
<HTML><HEAD><TITLE>Full Screen Mode Features (Showing the menu bar)</TITLE>
</HEAD><BODY background="../fancyhome/back.gif" tppabs="http://www.codeguru.com/fancyhome/back.gif" bgcolor="#FFFFFF">
<table WIDTH="100%"> <tr WIDTH="100%"> <td><table>
<tr><td><img src="../mfc_sourcebook.jpg" tppabs="http://www.codeguru.com/mfc_sourcebook.jpg"
ALT="MFC Programmer's SourceBook" WIDTH="256"
HEIGHT="88"><td></tr>
<tr><td valign="bottom"><font SIZE="+1"
color="#a0a0ff"><b>Discussion Board</b></font></td></tr>
</table></td> <td width="40"></td>
<td align="right" valign="top"><A HREF="http://209.66.99.126/cgi/ads.cgi?advert=myad2"><IMG SRC="../../209.66.99.126/advertise2.gif" tppabs="http://209.66.99.126/advertise2.gif" ALT="" BORDER=2></A><td> </tr> </table> <hr><P ALIGN=CENTER>[ <A HREF="#Responses">Read Responses</A> | <A HREF="#PostResponse">Post a New Response</A> | <A HREF="index.cgi.htm" tppabs="http://www.codeguru.com/mfc_bbs/index.cgi">Return to the Index</A> ]
<A HREF="read.cgi-read=9905.htm" tppabs="http://www.codeguru.com/mfc_bbs/read.cgi?read=9905">Next in Thread</A><P ALIGN=CENTER><BIG><BIG><BIG><STRONG>Full Screen Mode Features (Showing the menu bar)</STRONG></BIG></BIG></BIG>
<P ALIGN=CENTER><EM>Posted by <STRONG><A HREF="mailto:Ged2@Govst.edu">Steve</A></STRONG> on <STRONG>4/20/98 2:27p.m.</STRONG></EM></P>
<!-- REMOTE_HOST: 143.43.138.140; REMOTE_ADDR: 143.43.138.140-->
<P>In Office Pro 97, when word is maximized in fullscreen mode, and you drag the cursor to the top of the screen, the menubar scolls down. My app achieves fullscreen, but how do I get the menu to apper like in word?
<P>the basline code to my full screen is:
<BR>// from MainFrm.cpp
<BR>void CMainFrame::EscapeFullScreen()
<BR>{
<BR> if (m_pWndFullScreen != NULL)
<BR> OnViewFullScreen();
<BR>}
<P>void CMainFrame::OnViewFullScreen()
<BR>{
<BR> TRACE("m_wndStatusBar == %d\n", m_wndStatusBar.IsWindowVisible());
<BR> TRACE("m_wndToolBar == %d\n", m_wndToolBar.IsWindowVisible());
<P> if (m_pWndFullScreen != NULL)
<BR> {
<BR> // If we are returning the app to the Maximized state, SetWindowPlacement()
<BR> // draws the entire app twice - once to its "Normal" state, then once to
<BR> // the maximized state. The LockWindowUpdate() calls suppress the extra
<BR> // redraw.
<P> ShowControlBar(&m_wndToolBar, m_bHadToolBar, FALSE);
<BR> ShowControlBar(&m_wndStatusBar, m_bHadStatusBar, FALSE);
<P> m_pWndFullScreen->LockWindowUpdate();
<BR> m_pWndFullScreen->SetWindowPlacement(&m_PreviousPlace);
<BR> m_pWndFullScreen->UnlockWindowUpdate();
<P> LockWindowUpdate();
<BR> SetWindowPlacement(&m_MainPreviousPlace);
<BR> UnlockWindowUpdate();
<BR> m_pWndFullScreen = NULL;
<BR> }
<BR> else
<BR> {
<BR> m_pWndFullScreen = MDIGetActive();
<BR> ASSERT(m_pWndFullScreen != NULL);
<P> m_bHadToolBar = m_wndToolBar.IsWindowVisible();
<BR> m_bHadStatusBar = m_wndStatusBar.IsWindowVisible();
<BR> ShowControlBar(&m_wndToolBar, TRUE, TRUE); // ShowControlBar(&m_wndToolBar, FALSE, FALSE);
<BR> ShowControlBar(&m_wndStatusBar,FALSE, FALSE);
<P> m_pWndFullScreen->GetWindowPlacement(&m_PreviousPlace);
<BR> GetWindowPlacement(&m_MainPreviousPlace);
<P> CRect rectDesktop;
<BR> if (!::SystemParametersInfo(SPI_GETWORKAREA, 0, &rectDesktop, 0))
<BR> ::GetWindowRect(::GetDesktopWindow(), &rectDesktop);
<BR> else
<BR> {
<BR> rectDesktop.right = ::GetSystemMetrics(SM_CXSCREEN);
<BR> rectDesktop.bottom = ::GetSystemMetrics(SM_CYSCREEN);
<BR> rectDesktop.right -= rectDesktop.left;
<BR> rectDesktop.bottom -= rectDesktop.top;
<BR> rectDesktop.left = -rectDesktop.left;
<BR> rectDesktop.top = -rectDesktop.top;
<BR> }
<P> TRACE("Going to (%d,%d) - (%d,%d)\n", rectDesktop.left, rectDesktop.top,
<BR> rectDesktop.right, rectDesktop.bottom);
<P> CRect rectDesired = rectDesktop;
<BR> ::AdjustWindowRect(&rectDesktop, GetStyle(), TRUE);
<P> TRACE("Adjusted to (%d,%d) - (%d,%d)\n", rectDesktop.left, rectDesktop.top,
<BR> rectDesktop.right, rectDesktop.bottom);
<P> rectDesktop.bottom += ::GetSystemMetrics(SM_CYBORDER); // See "Ask Dr. GUI #10"
<BR> m_FullScreenPlace = rectDesktop;
<BR> m_MainFullScreenPlace = rectDesktop;
<P> WINDOWPLACEMENT wpNew = m_PreviousPlace;
<BR> wpNew.showCmd = SW_SHOWNORMAL;
<BR> wpNew.rcNormalPosition = rectDesktop;
<P> LockWindowUpdate();
<BR> SetWindowPlacement(&wpNew);
<BR> UnlockWindowUpdate();
<P> TRACE("Before MDI Child to (%d,%d) - (%d,%d)\n", wpNew.rcNormalPosition.left, wpNew.rcNormalPosition.top,
<BR> wpNew.rcNormalPosition.right, wpNew.rcNormalPosition.bottom);
<P> wpNew.rcNormalPosition = rectDesired;
<BR> ::AdjustWindowRect(&(wpNew.rcNormalPosition), m_pWndFullScreen->GetStyle(), FALSE);
<P> TRACE("MDI Child to (%d,%d) - (%d,%d)\n", wpNew.rcNormalPosition.left, wpNew.rcNormalPosition.top,
<BR> wpNew.rcNormalPosition.right, wpNew.rcNormalPosition.bottom);
<P> m_pWndFullScreen->LockWindowUpdate();
<BR> m_pWndFullScreen->SetWindowPlacement(&wpNew);
<BR> m_pWndFullScreen->UnlockWindowUpdate();
<BR> }
<BR>}
<P>void CMainFrame::OnUpdateViewFullScreen(CCmdUI* pCmdUI)
<BR>{
<BR> CMDIChildWnd* pWnd = MDIGetActive();
<BR> pCmdUI->Enable(pWnd != NULL);
<BR> pCmdUI->SetCheck(m_pWndFullScreen != NULL);
<BR>}
<P>void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
<BR>{
<BR> if (m_pWndFullScreen != NULL)
<BR> {
<BR> lpMMI->ptMaxSize.y =
<BR> lpMMI->ptMaxTrackSize.y = m_FullScreenPlace.Height();
<BR> lpMMI->ptMaxSize.x =
<BR> lpMMI->ptMaxTrackSize.x = m_FullScreenPlace.Width();
<BR> }
<BR> else
<BR> CMDIFrameWnd::OnGetMinMaxInfo(lpMMI);
<BR>}
<P>BOOL CMainFrame::GetFullScreenSize(CWnd* pWnd, POINT& pt) const
<BR>{
<BR> if (m_pWndFullScreen != NULL && pWnd->m_hWnd == m_pWndFullScreen->m_hWnd)
<BR> {
<BR> pt.x = m_FullScreenPlace.Width();
<BR> pt.y = m_FullScreenPlace.Height();
<BR> pWnd->ScreenToClient(&pt);
<BR> }
<P> TRACE("FullScreen Size is %d, %d\n", pt.x, pt.y);
<BR> return (m_pWndFullScreen != NULL);
<BR>}
<P>// from ChildFrm.cpp
<BR>void CChildFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
<BR>{
<BR> CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
<P> POINT pt;
<P> if (pFrame->GetFullScreenSize(this, pt))
<BR> {
<BR> ClientToScreen(&pt);
<BR> lpMMI->ptMaxSize = pt;
<BR> lpMMI->ptMaxTrackSize = pt;
<BR> }
<BR> else
<BR> CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
<BR>}
<P>My guess is adding something like this:
<P>CRect menurect;
<BR>GetClientRect(&menurect);
<BR>float top = (float)menurect.top;
<BR>if (GetCaretPos() == top)
<BR>{
<BR> // Show menu cause I don't know how
<BR>}
<P>Apreciate it
<BR>-Steve
</P>
<A NAME="Responses"><HR></A><P ALIGN=CENTER><BIG><BIG><STRONG>Responses</STRONG></BIG></BIG>
<P><UL><LI><STRONG><A HREF="read.cgi-read=9905.htm" tppabs="http://www.codeguru.com/mfc_bbs/read.cgi?read=9905">Re: Full Screen Mode Features (Showing the menu bar)</A></STRONG> : mao zhihong -- <EM>4/20/98 8:00p.m.</EM>
<UL>
</UL>
<LI><STRONG><A HREF="read.cgi-read=9915.htm" tppabs="http://www.codeguru.com/mfc_bbs/read.cgi?read=9915">Re: Full Screen Mode Features (Showing the menu bar)</A></STRONG> : Andy -- <EM>4/20/98 10:40p.m.</EM>
<UL>
<LI><STRONG><A HREF="read.cgi-read=9985.htm" tppabs="http://www.codeguru.com/mfc_bbs/read.cgi?read=9985">Re: Full Screen Mode Features (Showing the menu bar)</A></STRONG> : Steve -- <EM>4/21/98 1:01p.m.</EM>
<UL>
</UL>
</UL>
</UL></P>
<A NAME="PostResponse"><HR></A><P ALIGN=CENTER><BIG><BIG><STRONG>Post a New Response</STRONG></BIG></BIG>
<P><FORM METHOD=POST ACTION="http://www.codeguru.com/mfc_bbs/index.cgi?post">
<INPUT TYPE=HIDDEN NAME="followup" VALUE="9884">
<P><CENTER><TABLE><TR>
<TD ALIGN=RIGHT><P><STRONG>Your Name:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="name" SIZE=40></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>E-Mail Address:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="email" SIZE=40></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>Subject:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="subject" SIZE=40 VALUE="Re: Full Screen Mode Features (Showing the menu bar)"></TD></TR><TR>
<TD COLSPAN=2 ALIGN=CENTER><P><STRONG>Message:</STRONG><BR><TEXTAREA COLS=80 ROWS=15 NAME="body" WRAP=PHYSICAL>
</TEXTAREA></TD></TR><TR>
<TD COLSPAN=2 ALIGN=CENTER><HR WIDTH=50%><P><SMALL>If you'd like to include a link to another page with your message,<BR>please provide both the URL address and the title of the page:</SMALL></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>Optional Link URL:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="url" SIZE=40 VALUE="http://"></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>Optional Link Title:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="url_title" SIZE=40></TD></TR><TR>
<TD COLSPAN=2 ALIGN=CENTER><HR WIDTH=50%><P><SMALL>If you'd like to include an image (picture) with your message,<BR>please provide the URL address of the image file:</SMALL></TD></TR><TR>
<TD ALIGN=RIGHT><P><STRONG>Optional Image URL:</STRONG></TD><TD><INPUT TYPE=TEXT NAME="imageurl" SIZE=40 VALUE="http://"></TD></TR><TR>
<TD COLSPAN=2 ALIGN=CENTER><HR WIDTH=50%><P><SMALL>If you'd like e-mail notification of responses, please check this box:</SMALL> <INPUT TYPE=CHECKBOX NAME="wantnotice" CHECKED VALUE="yes"></TD></TR><TR>
<TH COLSPAN=2><HR WIDTH=50%><P><INPUT TYPE=SUBMIT NAME="Preview" VALUE="Preview Message"> <INPUT TYPE=SUBMIT NAME="Post" VALUE="Post Message"></TH></TR></TABLE></CENTER></P></FORM>
<HR><P ALIGN=CENTER><SMALL>The MFC Discussion Board is maintained with <STRONG><A HREF="http://awsd.com/scripts/webbbs/">WebBBS 2.24</A></STRONG>.</SMALL></P>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -