计算机语言VC学习心得
计算机语言VC++学习心得计算机语言VC++学习心得
通过对VC++的一个学期的学习,觉得有所收获。
我是从VC的sdk编程过度到这个MFC编程当中,尽管开始是有些不适应,有很多知识没有掌握,对MFC的原理还是不是很清楚,出了错误改起来很费力。通过老师的讲解,我逐渐了解了MFC的一些基础应用和一些常用知识。比如MFC的CWnd累的函数中的windowProc函数,它是这个函数是cwnd类的一个虚函数,功能就是处理窗口的消息的,跟sdk编程中的窗口消息函数是一回事,写法大同小异,用这个方法本文由论文联盟http://www.LWlm.COM收集整理写的程序用这个方法写的程序,开发效率要快很多呢(对于MFC的初学者),下面我来介绍一下吧。
我的开发环境是Microsoft Visual C 6.0;
选择WIN32 Application工程建一个空的工程,然后加一个.cpp文件,关键的一部是altf7打开settings选项,在general选项中的MICROSOFT foundation classes选项中选择use MFC in a static library,这样就可以在这个工程中使用MFC基础类库编程了,这样可以大大的提高编程的效率,减小了出错的几率
MFC工程中有界面程序一定有两个类,一个是CWND类它提供了微软基础类库中所有窗口类的基本功能,另一个就是应用程序类CWINAPP。
定义一个类,由CWINAPP类派生的类:
Class CMyApp::public CWinApp
{
public:
Virtural BOOL InitInstance();
}
定义一个CWND类的派生类:
Class CMyWnd::public CWnd
{
public:
CMyWnd();
virtural LRESULT WindowProc(UINT message,WPARAM wParam,LPARAM lParam);
}
再添加一个.cpp文件。
看看CWyApp类中的InitInstance函数吧;
最先定义一个CMyApp类的对象:
CMyApp theApp; BOOL CMyApp::InitInstance()
{
m_pMainWnd=new CMyWnd;
::ShowWindow(*m_pMainWnd,this->m_nCmdShow);
::UpdateWindow(*m_pMainWnd); return TRUE;
}
CMyWnd::CMyWnd()
{
LPCTSTR lpszClassName=AfxRegisterWndClass(CS_HREDRAW |CS_VREDRAW,::LoadCursor(NULL,IDC_ARROW),
(HBRUSH)(COLOR_3DFACE 1)); CreateEx(WS_EX_CLIENTEDGE,lpszClassName,”起始”, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,0,0);
}
关键的代码就是下面的这段,可以是说一个窗口的消息函数???所有的消息都要在这个函数中处理,和SDK编程中的消息写法一样,不用象在MFC中那样添加消息映射了,理解起来很方便,很直观。
LRESULT CMyWnd::WindowProc(UINT message,WPARAM wParam,LPARAM lparam)// 这个函数相当于WinMain函数中的窗口函数
{
HDC hdc;
PAINTSTRUCT ps;
switch (message)
{
case WM_CREATE:
{
::SetWindowText(m_hWnd,”hello First WND”);
::CreateWindowEx(0,”button”,”测试”,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,50,50,110,30,m_hWnd, (HMENU)IDB_BUTTON,AfxGetApp()->m_hInstance,0);
break;
}
case WM_COMMAND: // 这个消息是用来接收控件发送来的消息的,
{ switch (LOWORD(wParam))
{ case IDB_BUTTON: //我们的按钮控件的ID
{ //::SendMessage(m_hWnd,WM_CLOSE,0,0); //