怎样用MFC做一个图形界面程序

怎样用MFC做一个图形界面程序,第1张

给你个最最简单的MFC程序。你可以打开2005 新建win32 程序 建立空项目 然后编写如下代码//hello.cpp

#include <afxwin.h>

//喊中 说明应用程序类

class CHelloApp : public CWinApp

{

  public:

 virtual BOOL InitInstance()

}

/郑洞山/ 建立应用程序类的实例

CHelloApp HelloApp

//颤搏 说明主窗口类

class CHelloWindow : public CFrameWnd

{

CStatic* cs

public:

CHelloWindow()

}

// 每当应用程序首次执行时都要调用的初始化函数

BOOL CHelloApp::InitInstance()

{

m_pMainWnd = new CHelloWindow()

m_pMainWnd->ShowWindow(m_nCmdShow)

m_pMainWnd->UpdateWindow()

return TRUE

}

// 窗口类的构造函数

CHelloWindow::CHelloWindow()

{

// 建立窗口本身

Create(NULL,

  "Hello World!",

  WS_OVERLAPPEDWINDOW,

  CRect(0,0,200,200))

// 建立静态标签

cs = new CStatic()

cs->Create("hello world",

  WS_CHILD|WS_VISIBLE|SS_CENTER,

  CRect(50,80,150,150),

  this)

} 这样就出来了。

http://www.xici.net/b304234/d17269213.htm 你可以看这篇文章,非常好的入门文章

我们在使用Visual Studio 2015创建桌面应用的时候,最经常遇到的就是Winform和MFC了,那么如何在Visual Studio 2015中创建MFC窗体应用呢?下面我给大家分享一下。

工具/材料

Visual Studio 2015

01

首先我们滚姿闷大弯打开Visual Studio 2015软件,点击顶部的文件菜单,然后选择新建下册李面的项目选项,如下图所示

02

接下来在d出的新建项目界面中我们定位到Visual C++下面的MFC,然后选择右侧的MFC应用程序,如下图所示

03

然后会打开MFC应用程序向导界面,我们选择应用程序类型为单个文档,如下图所示

04

接着在复合文档支持界面中将复合文档支持类型选择为无,如下图所示

05

接下来会进入文档模板属性界面,这里需要给文件扩展名起一个名字,大家根据自己的情况随便起即可,如下图所示

06

然后就会进入数据库支持设置界面,由于这里并没有使用数据库,所以勾选无,如下图所示

07

接下来就进入到用户界面功能选择页了,我们需要根据自己的实际情况选择使用哪些功能,如下图所示

08

最后运行MFC应用程序,我们就会看到如下图所示的MFC窗体应用了,到这里在Visual Studio中创建MFC窗体应用程序就创建完了

全屏显示是一些应用软件程序必不可少的功能。比如在用VC++编辑工程源文件或编辑对话框等棚明并资源时,选择菜单“ViewFull Screen”,即可进入全屏显示状态,按“Esc”键后会退出全屏显示状态。

在VC++6.0中我们用AppWizard按默认方式生成单文档界面的应用程序框架。下面将先讨论点击菜单项“ViewFull Screen”实现全屏显示的方法,再讲述按“Esc”键后如何退出全屏显示状态。

1) 在CMainFrame类中,增加如下三个成员变量。

Class CMainFrame : public CFrameWnd

{ private: //自己添加的三个成员变量

WINDOWPLACEMENT m_OldWndPlacement//用来保存原窗口位置

BOOL m_bFullScreen//全屏显示标志

Crect m_FullScreenRect//表示全屏显示时的窗口位置

protected: CMainFrame()

DECLARE_DYNCREATE(CMainFrame)}

2)在资源编辑器中编辑菜单IDR_MAINFRAME。在“View”菜单栏下添加菜链迹单项“Full Screen”。在其属性框中,ID设置为ID_FULL_SCREEN,Caption为“Full Screen”。还可以在工具栏中添加新的工具图标,并使之与菜单项“Full Screen”相关联,即将其ID值也设置为ID_FULL_SCREEN。

3)设计全屏显示处理函数,在CMainFrame类增加上述菜单项ID_FULL_SCREEN消息的响应函数。响应函数如下:

void CMainFrame::OnFullScreen()

{ GetWindowPlacement(&m_OldWndPlacement)

Crect WindowRect

GetWindowRect(&WindowRect)

Crect ClientRect

RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect)

ClientToScreen(&ClientRect)

// 获取屏幕的分辨率

int nFullWidth=GetSystemMetrics(SM_CXSCREEN)

int nFullHeight=GetSystemMetrics(SM_CYSCREEN)

//将除控制条外的客户槐衡区全屏显示到从(0,0)到(nFullWidth, nFullHeight)区域, //将(0,0)和(nFullWidth, nFullHeight)两个点外扩充原窗口和除控制条之外的 客户区位置间的差值, 就得到全屏显示的窗口位置

m_FullScreenRect.left = WindowRect.left-ClientRect.left

m_FullScreenRect.top = WindowRect.top-ClientRect.top

m_FullScreenRect.right = WindowRect.right-ClientRect.right+nFullWidth

m_FullScreenRect.bottom = WindowRect.bottom-ClientRect.bottom+nFullHeight

m_bFullScreen = TRUE// 设置全屏显示标志为 TRUE

// 进入全屏显示状态

WINDOWPLACEMENT wndpl

wndpl.length=sizeof(WINDOWPLACEMENT)

wndpl.flags=0

wndpl.showCmd=SW_SHOWNORMAL

wndpl.rcNormalPosition=m_FullScreenRect

SetWindowPlacement(&wndpl)}

4)重载CMainFrame类的OnGetMinMaxInfo函数,在全屏显示时提供全屏显示的位置信息。

Void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)

{ if(m_bFullScreen)

{ lpMMI->ptMaxSize.x=m_FullScreenRect.Width()

lpMMI->ptMaxSize.y=m_FullScreenRect.Height()

lpMMI->ptMaxPosition.x=m_FullScreenRect.Width()

lpMMI->ptMaxPosition.y=m_FullScreenRect.Height()

// 最大的Track尺寸也要改变

lpMMI->ptMaxTrackSize.x=m_FullScreenRect.Width()

lpMMI->ptMaxTrackSize.y=m_FullScreenRect.Height()

} CFrameWnd::OnGetMinMaxInfo(lpMMI)

}完成上面的编程后,可以联编执行FullScreen.exe,选择菜单“ViewFull Screen”或点击与之关联的工具栏按钮即可进入全屏显示状态。但现在还需要增加用户退出全屏显示状态的 *** 作接口,下面讲述如何编程实现按“Esc”键退出全屏显示状态。

1)在ClassView中选中CMainFrame并单击鼠标右键,选择“Add Member Function…”,添加public类型的成员函数EndFullScreen,该函数将完成退出全屏显示的 *** 作。

Void CMainFrame::EndFullScreen()

{ if(m_bFullScreen)

{ //退出全屏显示, 恢复原窗口显示

ShowWindow(SW_HIDE)

SetWindowPlacement(&m_OldWndPlacement)}}

2)函数EndFullScreen可以退出全屏显示状态,问题是如何在“Esc”键被按下之后调用执行此函数。由于视图类可以处理键盘输入的有关消息(如WM_KEYDOWN表示用户按下了某一个键),我们将在视图类CFullScreenView中添加处理按键消息WM_KEYDOWN的响应函数OnKeyDown。判断如果按的键为“Esc”键,则调用CMainFrame类的函数EndFullScreen,便可退出全屏显示状态。

Void CFullScreenView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{ if(nChar==VK_ESCAPE) // 如果按的键为Esc键

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

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

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

pFrame->EndFullScreen()}

Cview::OnKeyDown(nChar, nRepCnt, nFlags)}

这样我们就实现了比较专业的全屏显示的功能,相信肯定会令你设计的软件程序增色不少。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12366942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存