VC初学者指南:MFC入门与实战

5星 · 超过95%的资源 需积分: 9 3 下载量 105 浏览量 更新于2024-09-19 收藏 199KB PDF 举报
"VC精华教程:MFC入门系列,面向已掌握C和C++基础,以及SDK编程的初学者,旨在引导他们入门MFC编程。教程通过一个简单的例子展示如何创建并运行一个基本的MFC窗口应用。" 在MFC(Microsoft Foundation Classes)编程中,它是微软提供的一套C++类库,用于简化Windows应用程序的开发。本教程适合那些已经熟悉C++基础,但对MFC不熟悉的开发者。教程首先展示了如何创建一个简单的MFC应用程序,主要涉及以下知识点: 1. **CFrameWnd类**:`CFrameWnd`是MFC中的一个基类,通常用于创建具有标准框架窗口功能的应用程序。在示例代码中,`sample`类继承自`CFrameWnd`,表示创建的是一个带有标准框架的窗口。 2. **CWinApp类**:`CWinApp`是MFC中的另一个核心类,代表应用程序本身。`App`类继承自`CWinApp`,并且重载了`InitInstance`和`ExitInstance`两个成员函数,它们分别在应用程序启动和退出时被调用。 - `BOOL App::InitInstance()`:这是应用程序初始化的地方,通常在这里创建主窗口,并显示它。在示例中,创建了一个`sample`对象,并将其设置为主窗口`m_pMainWnd`,然后显示最大化窗口。 - `BOOL App::ExitInstance()`:应用程序结束时执行,用于清理和关闭资源。在示例中,它显示一个消息框,然后返回TRUE,表示成功退出。 3. **MFC工程创建**:在VC++6.0环境下,创建一个Win32 Application项目,选择空工程,并在后续过程中添加C++源文件。这个过程涉及到工程配置和源代码编写。 4. **编译与链接错误**:在实际操作中,可能会遇到链接错误,如`unresolved external symbol`,这通常是由于缺少必要的库引用或函数实现导致的。在本例中,可能是因为没有正确链接到MFC库。解决方法是在工程设置中确保MFC库被正确链接。 5. **源代码结构**:源代码包含两部分,一是定义窗口类`sample`及其构造函数,创建窗口并显示消息框;二是定义`App`类,覆盖`InitInstance`和`ExitInstance`方法。最后,通过全局变量`a`实例化`App`类,使得程序可以自动调用这些方法。 通过这个简单的例子,学习者可以了解MFC的基本架构和工作流程,为进一步深入学习MFC的各种控件、对话框、文档视图结构等奠定基础。在实际开发中,MFC可以极大地简化Windows API的使用,提高开发效率。

#!/usr/local/python # -- coding: utf-8 -- import requests import json import logging # Function to get the vCenter server session def get_vc_session(vcip, username, password): s.post('https://' + vcip + '/rest/com/vmware/cis/session', auth=(username, password)) return s # Function to get all the VMs from vCenter inventory def get_vms(vcip,host=''): vms = s.get('https://' + vcip + '/rest/vcenter/vm'+"?filter.hosts="+str(host)) return vms def get_hosts(vcip,cluster=''): result = s.get('https://' + vcip + '/rest/vcenter/host'+"?filter.clusters="+str(cluster)) return result def get_clusters(vcip,dc=''): clusters = s.get('https://' + vcip + '/rest/vcenter/cluster'"?filter.datacenters="+str(dc)) return clusters def get_clusterinfo(vcip,cluster): clusterinfo = s.get('https://' + vcip + '/rest/vcenter/cluster/'+cluster) return clusterinfo def get_datacenters(vcip): datacenters = s.get('https://' + vcip + '/rest/vcenter/datacenter') return datacenters def get_datacenterinfo(vcip,datacenter): datacenterinfo = s.get('https://' + vcip + '/rest/vcenter/datacenter/'+datacenter) return datacenterinfo # Function to power on particular VM def poweron_vm(vmmoid, vcip): s.post('https://' + vcip + '/rest/vcenter/vm/' + vmmoid + '/power/start') # Function to power off particular VM def poweroff_vm(vmmoid, vcip): s.post('https://' + vcip + '/rest/vcenter/vm/' + vmmoid + '/power/stop') def getfolder(vcip): folderinfo = s.get('https://' + vcip + '/rest/vcenter/folder') print(folderinfo) print(dir(folderinfo)) return json.loads(folderinfo.content).values()[0] def gethostlistinfo(vcip): info=get_datacenters(vcip) for dc in json.loads(info.content).values()[0]: dcname=dc.get("name") dcvalue = dc.get("datacenter") #print(dcname,dcvalue) info=get_clusters(vcip, dc=dcvalue) for cls in json.loads(info.content).values()[0]: clustername=cls.get("name") clustervalue = cls.get("cluster") #print(dcname,clustername,clustervalue) info=get_hosts(vcip,cluster=clustervalue) for h in json.loads(info.content).values()[0]: hostip=h.get("name") hostvalue = h.get("host") constate = h.get("connection_state") hostPowerState = h.get("power_state") #print(vcip,dcname,clustername,hostip,constate,power_state) info=get_vms(vcip,hostvalue) for v in json.loads(info.content).values()[0]: vmname = v.get("name") vmvalue = v.get("vm") vmMemSize = v.get("memory_size_MiB") vmCpuCount = v.get("cpu_count") vmPowerState = v.get("power_state") print(vcip,dcname,clustername,hostip,constate,hostPowerState,vmname,vmMemSize,vmCpuCount,vmPowerState) ###main#### vcip='172...' username="administrator@vsphere.local" password="YVd5******" logging.captureWarnings(True) global s s = requests.Session() s.verify = False s = get_vc_session(vcip, username, password) info=gethostlistinfo(vcip) 解释这段代码并改正格式

2023-05-30 上传