第1章C++关键语法及其在VC++中的应用1.1重载1.1.1函数重载1.1.2运算符重载1.1.3函数重载在MFC中的应用举例1.1.4运算符重载在MFC中的应用举例2.2虚拟函数1.2.1静态联编与动态联编1.2.2虚拟函数的定义1.2.3虚拟函数的实现机制1.2.4虚拟函数的应用1.2.5纯虚拟函数1.2.6虚拟函数在MFC中的应用举例1.3静态成员1.3.1静态成员变量1.3.2静态成员函数1.3.3静态成员变量在MFC中的应用举例1.3.4静态成员函数在MFC中的应用举例1.4类模板1.4.1类模板的定义1.4.2使用类模板和模板类1.4.3模板在MFC中的应用举例1.5多重继承和内嵌类1.5.1继承方式与访问权限1.5.2多重继承和虚拟基类1.5.3内嵌类与类合成1.5.4类继承与类合成的应用1.5.5多重继承和内嵌类在COM中的应用第2章MFC类结构与窗口操作2.1MFC类结构2.1.1CObject类2.1.2CCmdTarget类2.1.3CWinThread类2.1.4CWnd类2.2CWnd类与Windows窗口的关系2.2.1使用WIN32API创建窗口2.2.2亲自动手创建窗口封装类2.2.3CWnd类如何封装Windows窗口2.3CWnd的派生类2.3.1CFrameWnd类2.3.2CView类2.3.3CDialog类2.4窗口操作2.4.1检索窗口2.4.2屏幕坐标与客户区坐标2.4.3窗口之间的层次关系2.4.4父窗口与子窗口2.5Windows窗口类2.5.1窗口类的结构2.5.2系统定义的窗口类2.5.3窗口的子类化和超类化第3章消息映射与消息处理3.1MFC的消息映射3.1.1消息映射机制3.1.2消息映射的宏定义3.2非窗口消息3.2.1命令消息3.2.2通知消息3.2.3反射消息3.2.4非窗口消息的传递路由3.2.5非窗口消息的扩展3.3特殊消息和处理函数3.3.1空闲消息处理3.3.2命令状态更新消息3.3.3使用OnCmdMsg0函数分发非窗口消息第4章控件子窗口4.1控件的创建和子类化4.1.1控件的创建4.1.2控件的子类化4.2控件的属主画与自定义画4.2.1属主画消息处理和虚拟函数4.2.2几个控件的属主画特性4.2.3控件的自定义画4.3自定义控件4.3.1自定义控件的窗口类4.3.2自定义控件的通知消息4.3.3自定义控件的绘制4.3.4自定义的分隔条控件第5章界面优化5.1开发使用控制条5.1.1为控制条按需分配客户区5.1.2控制条基类CControlBar5.1.3控制条的停靠与浮动5.1.4实现停靠浮动子窗口5.2工具栏优化5.2.1添加按钮文本5.2.2创建工具栏的子控件5.3菜单优化5.3.1动态创建菜单5.3.2菜单的属主画第6章文档视图框架6.1CWinApp应用类6.1.1应用类全局对象6.1.2注册表和INI文件操作6.1.3命令行参数处理6.2单文档模板框架6.2.1文档、框架、视图的动态创建6.2.2非拆分视图的切换6.3多文档模板框架6.3.1CMDIFrameWnd主框架6.3.2CMDIChildWnd子框架6.3.3CDocument类的文档管理功能6.4编写多框架的应用程序6.4.1创建多框架的必要性6.4.2自动创建的多框架程序6.4.3改进自动创建的多框架程序6.4.4手工创建多框架程序6.5拆分视图6.5.1认识CsplitterWnd窗口拆分类6.5.2应用Cview::OnCreate0消息处理函数实现拆分6.5.3创建非视图的拆分子窗口6.5.4拆分视图的创建删除和隐藏显示第7章屏幕绘图与打印7.1MFC设备环境类7.1.1基类CDC7.1.2CWindowDC与CClientDC7.1.3WM_PAINT窗口消息与CPaintDC类7.1.4使用设备上下文的剪裁区提高刷新效率7.2脱离视图的MFC打印功能7.2.1准备打印设备和打印参数7.2.2单页打印7.2.3分页打印7.2.4调整图文打印尺寸7.3窗口的自动打印7.3.1自动打印的消息处理7.3.2自动打印客户区和非客户区第8章多线程的创建与控制8.1工作者线
2024/6/30 22:51:08 18.07MB VC++ 编程技术 Visual C++
1
letcityData={"RECORDS":[{"value":110000,"label":"北京","children":[{"value":110100,"label":"北京","children":[{"value":110101,"label":"东城"},{"value":110102,"label":"西城"},{"value":110105,"label":"朝阳"},{"value":110106,"label":"丰台"},{"value":110107,"label":"石景山"},{"value":110108,"label":"海淀"},{"value":110109,"label":"门头沟"},{"value":110111,"label":"房山"},{"value":110112,"label":"通州"},{"value":110113,"label":"顺义"},{"value":110114,"label":"昌平"},{"value":110115,"label":"大兴"},{"value":110116,"label":"怀柔"},{"value":110117,"label":"平谷"},{"value":110228,"label":"密云"},{"value":110229,"label":"延庆"}]}]}AntDesign组件三级联动资源库必备
2024/6/27 7:27:26 137KB react 省市区资源库 Ant Design
1
1本程序在vc++6.0编译通过并能正常运行。
2主界面程序已经尽量做到操作简便了,用户只需要根据提示一步步进行操作就行了。
六思考和总结:这个课程设计的各个基本操作大部分都在我的综合性实验中实现了,所以做这个主要攻克插入和删除这两个算法!其中插入在书本上已经有了,其中的右平衡算法虽然没有给出,但通过给出的左平衡算法很容易就可以写出右平衡算法。
所以最终的点就在于删除算法的实现!做的过程中对插入算法进行了非常非常多次的尝试!花了非常多的时间,这其中很多时候是在对程序进行单步调试,运用了VC6。
0的众多良好工具,也学到了很多它的许多好的调试手段。
其中删除算法中最难想到的一点是:在用叶子结点代替要删除的非叶子结点后,应该递归的运用删除算法去删除叶子结点!这就是整个算法的核心,其中很强烈得体会到的递归的强大,递归的最高境界(我暂时能看到的境界)!其它的都没什么了。
选做的那两个算法很容易实现的:1合并两棵平衡二叉排序树:只需遍历其中的一棵,将它的每一个元素插入到另一棵即可。
2拆分两棵平衡二叉排序树:只需以根结点为中心,左子树独立为一棵,右子树独立为一棵,最后将根插入到左子树或右子树即可。
BSTreeEmpty(BSTreeT)初始条件:平衡二叉排序树存在。
操作结果:若T为空平衡二叉排序树,则返回TRUE,否则FALSE.BSTreeDepth(BSTreeT)初始条件:平衡二叉排序树存在。
操作结果:返回T的深度。
LeafNum(BSTreeT)求叶子结点数,非递归中序遍历NodeNum(BSTreeT)求结点数,非递归中序遍历DestoryBSTree(BSTree*T)后序遍历销毁平衡二叉排序树TR_Rotate(BSTree*p)对以*p为根的平衡二叉排序树作右旋处理,处理之后p指向新的树根结点即旋转处理之前的左子树的根结点L_Rotate(BSTree*p)对以*p为根的平衡二叉排序树作左旋处理,处理之后p指向新的树根结点,即旋转处理之前的右子树的根结点LeftBalance(BSTree*T)对以指针T所指结点为根的平衡二叉排序树作左平衡旋转处理,本算法结束时,指针T指向新的根结点RightBalance(BSTree*T)对以指针T所指结点为根的平衡二叉排序树作右平衡旋转处理,本算法结束时,指针T指向新的根结点Insert_AVL(BSTree*T,TElemTypee,int*taller)若在平衡的二叉排序树T中不存在和e有相同的关键字的结点,则插入一个数据元素为e的新结点,并返回OK,否则返回ERROR.若因插入而使二叉排序树失去平衡,则作平衡旋转处理布尔变量taller反映T长高与否InOrderTraverse(BSTreeT)递归中序遍历输出平衡二叉排序树SearchBST(BSTreeT,TElemTypee,BSTree*f,BSTree*p)在根指针T所指的平衡二叉排序树中递归的查找其元素值等于e的数据元素,若查找成功,则指针p指向该数据元素结点,并返回TRUE,否则指针p指向查找路径上访问的最后一个结点并返回FALSE,指针f指向T的双亲,其初始调用值为NULLDelete_AVL(BSTree*T,TElemTypee,int*shorter)在平衡二叉排序树中删除元素值为e的结点,成功返回OK,失败返回ERRORPrintBSTree_GList(BSTreeT)以广义表形式打印出来PrintBSTree_AoList(BSTreeT,intlength)以凹入表形式打印,length初始值为0Combine_Two_AVL(BSTree*T1,BSTreeT2)合并两棵平衡二叉排序树Split_AVL(BSTreeT,BSTree*T1,BSTree*T2)拆分两棵平衡二叉树}(2)存储结构的定义:typedefstructBSTNode{ TElemTypedata; intbf;//结点的平衡因子 structBSTNode*lchild,*rchild;//左.右孩子指针}BSTNode,*BSTree;
1
奥林巴斯用户手册奥林巴斯API由于奥林巴斯(Olympus)被设计成“1vs.n”的方式(即一组业务逻辑对应的多套表现层的转换模式,例如:业务层执行addChild,实际在DOM中执行的是appendChild,在白鹭中执行的是addChild),因此代码被分拆到了多个部分中,可根据实际情况选择所需的表现层与本体进行搭配使用。
当前所有库的API目录如下
2024/4/24 18:44:48 4.98MB typescript mvc frontend FrontendJavaScript
1
LearnGoogleFlutterbyexample.Over65examplemini-apps.ChaptersInclude:ThreeChaptersonDartLanguage.IntroductiontoFlutter.InstallingFlutter.YourfirstFlutterApp.Dependencies&Packages.IntroductiontoWidgets&Composition.StatelessWidgets.StatefulWidgets.BasicMaterialWidgets.Multi-ChildWidgets.Single-ChildWidgets.AppScaffoldingWidgets.OtherWidgets.Builders.Routing&Navigation.Forms.Http,Apis,REST&JSON.FlutterwithHttp,Apis,REST&JSON.State.State&StatefulWidgets.State&InheritedWidgets.State&ScopedModel.State&BLoCswithStreams.LocalPersistence.Mixins.Debugging&PerformanceProfiling.
2024/3/7 23:18:21 11.31MB Flutter
1
使用ExtendedWPFToolkit内的ChildWindow窗体控件WPF实现类似MDI子窗体的功能
2024/2/20 20:45:27 648KB WPF MDI 子窗体
1
全国最全的省市区联动json数据,样本数据如下:{"type":"province","code":"110000","name":"北京市","child":[{"type":"city","code":"110100","name":"北京市","child":[{"type":"county","code":"110101","name":"东城区"},{"type":"county","code":"110101","name":"东城区"},{"type":"county","code":"110102","name":"西城区"},{"type":"county","code":"110105","name":"朝阳区"},{"type":"county","code":"110106","name":"丰台区"},{"type":"county","code":"110107","name":"石景山区"},{"type":"county","code":"110108","name":"海淀区"},{"type":"county","code":"110109","name":"门头沟区"},{"type":"county","code":"110111","name":"房山区"},{"type":"county","code":"110112","name":"通州区"},{"type":"county","code":"110113","name":"顺义区"},{"type":"county","code":"110114","name":"昌平区"},{"type":"county","code":"110115","name":"大兴区"},{"type":"county","code":"110116","name":"怀柔区"},{"type":"county","code":"110117","name":"平谷区"},{"type":"county","code":"110118","name":"密云区"},{"type":"county","code":"110119","name":"延庆区"}]}]}
2024/1/27 21:51:23 23KB 省市区 联动json json
1
在地图上画出各省市边界,北京市密云县json内容如下:{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"id":"110228","name":"密云县","cp":[117.0923,40.5121],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[116.7586,40.7064],[116.7847,40.7016],[116.7888,40.714],[116.7902,40.727],[116.7819,40.7524],[116.7833,40.7579],[116.7902,40.7517],[116.8025,40.7462],[116.819,40.7504],[116.8272,40.749],[116.8396,40.7607],[116.8341,40.7703],[116.8506,40.7751],[116.8506,40.7785],[116.8671,40.7847],[116.8629,40.7922],[116.8712,40.7943],[116.8739,40.7991],[116.8808,40.7977],[116.8863,40.8012],[116.8959,40.7936],[116.8945,40.7819],[116.8973,40.7778],[116.9234,40.7737],[116.9247,40.7627],[116.9289,40.7565],[116.9234,40.7524],[116.9261,40.7449],[116.9412,40.7401],[116.9453,40.7284],[116.9563,40.7229],[116.9659,40.714],[116.9646,40.7092],[117.0044,40.6968],[117.0195,40.6954],[117.0305,40.692],[117.0497,40.7002],[117.084,40.7023],[117.0964,40.7057],[117.1115,40.7071],[117.117,40.6995],[117.1225,40.7009],[117.1527,40.6968],[117.1664,40.6989],[117.1788,40.6934],[117.1829,40.6975],[117.2063,40.6947],[117.231,40.6844],[117.242,40.6769],[117.2612,40.681],[117.2777,40.6666],[117.2914,40.6597],[117.3257,40.6604],[117.3367,40.6631],[117.3367,40.6666],[117.3463,40.6741],[117.3615,40.6748],[117.3903,40.6837],[117.4068,40.6865],[117.4205,40.6865],[117.4507,40.6796],[117.4644,40.6734],[117.4796,40.6776],[117.4947,40.6748],[117.5056,40.6666],[117.507,40.6549],[117.5029,40.6528],[117.5015,40.6364],[117.4796,40.6357],[117.4713,40.6474],[117.448,40.6419],[117.4301,40.6405],[117.4219,40.6377],[117.4178,40.6185],[117.4136,40.6062],[117.4205,40.5945],[117.4232,40.5821],[117.4301,40.5787],[117.426,40.5732],[117.4205,40.5691],[117.404,40.5739],[117.4013,40.5698],[117.3944,40.567],[117.3889,40.5615],[117.3766,40.5663],[117.3656,40.5759],[117.3505,40.5801],[117.334,40.5766],[117.3106,40.5766],[117.2955,40.567],[117.2667,40.5581],[117.2502,40.5485],[117.253,40.5416],[117.2502,40.5375],[117.2598,40.5196],
2023/12/1 5:14:49 415KB 地图 省市边界
1
Android天气预报实验报告模板publicclassSetCityActivityextendsActivity{ //定义的一个自动定位的列表 privateListViewgpsView; //定义的一个省份可伸缩性的列表 privateExpandableListViewprovinceList; //定义的用于过滤的文本输入框 privateTextViewfilterText; //定义的一个记录城市码的SharedPreferences文件名 publicstaticfinalStringCITY_CODE_FILE="city_code"; //城市的编码 privateString[][]cityCodes; //省份 privateString[]groups; //对应的城市privateString[][]childs;//自定义的伸缩列表适配器privateMyListAdapteradapter;//记录应用程序widget的IDprivateintmAppWidgetId=AppWidgetManager.INVALID_APPWIDGET_ID; @OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.set_city);gpsView=(ListView)findViewById(R.id.gps_view);provinceList=(ExpandableListView)findViewById(R.id.provinceList);//设置自动定位的适配器gpsView.setAdapter(newGPSListAdapter(SetCityActivity.this));//==============================GPS=================================//当单击自动定位时gpsView.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterViewparent,Viewview, intposition,longid){ TextViewlocaleCity=(TextView)view.findViewById(R.id.locateCityText); localeCity.setText("正在定位..."); finalLocateHandlerhandler=newLocateHandler(localeCity); //添加一个线程来处理定位 newThread(){ publicvoidrun(){ MapcityMap=getLocationCityInfo(); //记录匹配的城市的索引 intprovinceIndex=-1; intcityIndex=-1; //传给处理类的数据封装对象 Bundlebundle=newBundle(); if(cityMap!=null){ //得到图家名 Stringcountry=cityMap.get(LocationXMLParser.COUNTRYNAME); //只匹配中国地区的天气 if(country!=null&&country.equals("中国")){ //得到省 Stringprovince=cityMap.get(LocationXMLParser.ADMINISTRATIVEAREANAME); //得到市 Stringcity=cityMa
2023/8/26 5:45:37 1.64MB 天气预报
1
简易版扫雷程序代码publicclassMineSweeperGame2extendsApplication{Cell[][]cell;inttotalMines=0;intmarkBomb=0;//总的地雷数量,简单会有10个,一般会有40个,困难99个intshowMines=10;Strings=String.valueOf(showMines);Labeltips=newLabel("Gameisrunning!");LabelshowMineNum=newLabel("mines:"+s);publicvoidstart(StageprimaryStage){StagestartStage=newStage();//选择按钮的界面ButtonstartButton=newButton("RESTART");Buttonchooseeasy=newButton("EASY(10mines)");Buttonchoosenormal=newButton("NORMAL(40mines)");Buttonchoosehard=newButton("HARD(99mines)");BorderPaneprimaryPane=newBorderPane();HBoxstartPane=newHBox(15);StackPanetopButtonPane=newStackPane(startButton);StackPanetopButtonPane2=newStackPane(showMineNum);StackPanebuttomPane=newStackPane(tips);HBoxtopPane=newHBox(50);topPane.getChildren().addAll(topButtonPane,topButtonPane2);primaryPane.setTop(topPane);tips.setStyle("-fx-border-color:red;-fx-background-color:white;");showMineNum.setStyle("-fx-border-color:black");primaryPane.setBottom(buttomPane);buttomPane.setPadding(newInsets(15,15,15,15));topPane.setPadding(newInsets(15,15,15,15));startPane.setPadding(newInsets(15,15,15,15));startPane.getChildren().add(chooseeasy);startPane.getChildren().add(choosenormal);
2023/8/24 13:54:33 12KB java
1
共 54 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡