C源码分析(Kit1175)
代码解析器算法
代码解析器算法
代码解析器算法是一种将代码模板解析成AST(抽象语法树)的方法。
它的基本思想是将代码模板视为一个字符串,然后使用解析器来识别其中的语法结构,并将其转换为AST。
解析器内部通常分为多个子解析器,如HTML解析器、文本解析器和过滤器解析器等。
在解析过程中,解析器会触发各种钩子函数,如开始标签钩子函数、结束标签钩子函数、文本钩子函数和注释钩子函数等。
这些钩子函数用于处理不同的语法结构,并构建相应的AST 节点。
例如,对于以下代码模板:<div id="app"><p>{{num}}</p></div>,解析器会依次触发标签开始钩子函数parseStartTag、文本钩子函数和标签结束钩子函数parseEndTag,从而构建出相应的AST节点。
总的来说,代码解析器算法是一种非常重要的技术,它可以帮助开发人员理解和处理代码模板,提高代码的可读性和可维护性。
ccriticalsection 源码 讲解
一、概述在计算机领域中,多线程编程是一个非常重要的技术。
然而,多线程编程中最常见的问题之一就是线程安全性,即多个线程在访问共享资源时可能会导致数据竞争和不确定的行为。
为了解决这一问题,操作系统和编程语言都提供了各种机制来保护共享资源的访问,其中最常见的就是临界区(Critical Section)。
二、临界区的概念临界区是指一段代码,其中包含对共享资源的访问操作。
在临界区中,只能有一个线程访问共享资源,其他线程需要等待当前线程退出临界区后才能进入。
这样可以确保多个线程不会同时修改共享资源,从而避免数据竞争和不确定的行为。
三、临界区的实现原理1. 锁机制锁是一种最基本的临界区保护机制,最常见的就是互斥锁。
当一个线程进入临界区时,会尝试获取互斥锁,如果锁已经被其他线程获取,则当前线程会被阻塞,直到锁被释放。
在操作系统层面,互斥锁可以借助于原子操作和内核态的支持来实现。
2. 条件变量除了互斥锁之外,条件变量也是一种常见的临界区保护机制。
条件变量通常与互斥锁配合使用,当一个线程需要等待某个条件成立时,可以调用条件变量的等待方法来让出CPU,当条件变量发出信号时,线程会被唤醒并重新竞争锁。
3. 原子操作原子操作是一种特殊的指令序列,可以确保在多线程环境下对共享资源的访问是原子的。
原子操作通常由硬件提供支持,可以保证在不需要加锁的情况下实现临界区的保护。
四、临界区保护的性能问题1. 锁的性能锁在保护临界区时需要进行线程的阻塞和唤醒操作,这会涉及到用户态和内核态的切换,以及竞争锁的开销。
过度使用锁会导致性能下降,甚至出现死锁的情况。
2. 条件变量的性能条件变量通常需要和锁配合使用,而且在等待和唤醒线程时都需要进行系统调用,这会带来一定的性能开销。
3. 原子操作的性能原子操作通常由硬件提供支持,可以在不需要加锁的情况下实现临界区的保护,因此性能相对较好,但并不是所有的临界区都适合使用原子操作。
五、临界区保护的实际应用1. 多线程编程在多线程编程中,临界区保护是非常关键的,可以确保共享资源的安全访问,从而避免数据竞争和不确定的行为。
侯捷老师——STL源码剖析
侯捷老师——STL源码剖析侯捷老师是国内知名的C++专家,他在C++领域有着很高的知名度和影响力。
他的《STL源码剖析》是一本非常经典的C++书籍,深入剖析了C++标准模板库(Standard Template Library,STL)的源代码,并详细解释了其设计思想和实现细节。
下面是对这本书的1200字以上的介绍。
《STL源码剖析》是一本写给C++程序员的经典著作,它由侯捷老师亲自编写,内容非常详尽和深入。
这本书主要介绍了C++标准模板库(STL)的源代码,并解析了其中的设计思想和实现细节。
通过阅读这本书,读者可以更好地理解STL的底层原理,提高自己的C++编程能力。
这本书共分为13个章节,每个章节都涉及了STL的不同组件和特性。
书中的内容既包括理论知识,也包括具体的代码实现。
侯捷老师用通俗易懂的语言和形象生动的例子,对STL的各个组件进行了详细介绍。
他从容器、迭代器、算法和函数对象等方面入手,逐步展开对STL的剖析。
每一章的结尾都有相关的练习题,读者可以通过做题来巩固所学知识。
在《STL源码剖析》中,侯捷老师对STL的源代码进行了深入分析,解释了其中的设计思想和实现原理。
他通过对容器的底层结构和操作进行剖析,揭示了STL的高效性和灵活性。
在对算法和函数对象的讲解中,他详细介绍了STL中的各种常用算法,并解释了它们的内部实现原理。
通过这种深入的分析,读者可以更好地理解STL的运作机制,并能够灵活运用STL进行程序设计。
除了对STL源代码的剖析,侯捷老师还对STL的使用和扩展进行了说明。
他介绍了STL的使用注意事项和常见问题,并给出了一些实用的编程技巧和优化建议。
此外,他还展示了如何扩展STL,给出了一些自定义容器和算法的示例。
这些内容对于想要深入学习和应用STL的读者来说是非常有价值的。
总的来说,侯捷老师的《STL源码剖析》是一本非常权威和深入的C++书籍,对于想要深入学习STL的C++程序员来说是一本必读之作。
Wincc画面制作中C脚本的应用分析
Wincc画面制作中C脚本的应用分析Wincc是一种用于人机界面(HMI)开发的软件,它提供了丰富的功能和工具,以便于用户制作交互性强的画面。
在Wincc画面制作中,C脚本是一种常用的编程语言,用于实现画面的特定功能和逻辑。
1. C脚本的基本概念和语法C脚本是一种类似于C语言的编程语言,它具有简单易学的特点。
在Wincc画面制作中,C脚本用于处理各种事件和操作,例如按钮点击、数据读写、画面切换等。
C脚本的语法与C语言基本相同,包括变量声明、条件语句、循环语句、函数定义等。
通过使用C脚本,用户可以根据自己的需求编写特定的逻辑代码,实现画面的自定义功能。
2. C脚本在Wincc画面制作中的应用场景2.1 数据处理和计算在Wincc画面制作中,常常需要对实时数据进行处理和计算,例如计算平均值、最大值、最小值等。
通过使用C脚本,可以方便地实现这些功能,提高画面的实用性和可读性。
2.2 事件处理和交互操作用户在与画面进行交互时,往往需要对按钮点击、鼠标移动等事件进行处理。
通过使用C脚本,可以捕捉这些事件,并编写相应的逻辑代码,实现画面的交互操作。
2.3 画面切换和导航在复杂的画面系统中,用户可能需要进行画面之间的切换和导航。
通过使用C脚本,可以实现画面之间的跳转和导航,提高用户的操作效率和便捷性。
3. C脚本的优势和注意事项3.1 灵活性和可扩展性C脚本作为一种编程语言,具有很高的灵活性和可扩展性。
用户可以根据自己的需求编写特定的逻辑代码,实现画面的自定义功能。
3.2 需要一定的编程知识使用C脚本进行画面制作需要一定的编程知识和经验。
对于不熟悉编程的用户来说,和掌握C脚本可能需要一定的时间和精力投入。
3.3 注意安全性和稳定性在使用C脚本进行画面制作时,需要注意安全性和稳定性。
编写的代码应该经过充分的测试和验证,以确保其能够正常运行并不会对系统造成不良影响。
4. 结论C脚本在Wincc画面制作中具有广泛的应用,可以实现画面的自定义功能和逻辑。
C源码(9)
else{f_FvXpprice = atof(c_FvXpprice);f_FvXpnum = atof(c_FvXpnum);f_FvXprebate = atof(c_FvXprebate);f_FvXpmoney = f_FvXpprice*f_FvXpnum*f_FvXprebate;c_FvXpmoney.Format("%10.2f",f_FvXpmoney);c_FvXpmoney.TrimLeft();m_FvXplist.SetItemText(m_FvXplist.row,6,c_FvXpmoney);}str.Format("%10.2f",CalculateMoney());str.TrimLeft();m_FvXpsummoney.SetWindowText(str);break;}default:break;}if (! sql.IsEmpty()){m_FvXppRs->raw_FvXpClose();m_FvXppRs->Open((_FvXpbstr_FvXpt)sql,m_FvXppCon.GetInterfacePtr(),adO penKeyset,adLockOptimistic,adCmdText);if (m_FvXppRs->RecordCount>0){m_FvXpauxilist.DeleteAllItems();int i=0;while(! m_FvXppRs->adoEOF){m_FvXpauxilist.InsertItem(100,”OK”);for (int m = 0;m<5;m++)m_FvXpauxilist.SetItemText(i,m,(TCHAR*)(_FvXpbstr_FvXpt)m_FvXppRs->Ge tFields()->GetItem((long)m)->Value);m_FvXppRs->MoveNext();i +=1;}ShowListInfo();}elsem_FvXpauxilist.ShowWindow(SW_FvXpHIDE);}elsem_FvXpauxilist.ShowWindow(SW_FvXpHIDE);}bool CDlgBookInput2::InputInfoIsNull(){CStringc_FvXpprovider,c_FvXptotalmoney,c_FvXprebate,c_FvXppaymoney,c_FvXpfac tmoney;m_FvXpprovider.GetWindowText(c_FvXpprovider);m_FvXpsummoney.GetWindowText(c_FvXptotalmoney);m_FvXprebate.GetWindowText(c_FvXprebate);m_FvXppaymoney.GetWindowText(c_FvXppaymoney);m_FvXpfactmoney.GetWindowText(c_FvXpfactmoney);if((c_FvXpprovider.IsEmpty())||(c_FvXptotalmoney.IsEmpty())||(c_FvXpreb ate.IsEmpty())||(c_FvXppaymoney.IsEmpty())||(c_FvXpfactmoney.IsEmpty( )))return true;elsereturn false;}void CDlgBookInput2::LimitEdit(){m_FvXplist.edit.IsNumber = false;//在修改商品数据,价格,折扣时只允许输入数字if ((m_FvXplist.col ==3)||(m_FvXplist.col ==4)||(m_FvXplist.col==5)) {m_FvXplist.edit.IsNumber = true;}}void CDlgBookInput2::MoveFocus(){m_FvXplist.SetFocus();//m_FvXplist.edit.PostMessage(WM_FvXpKILLFOCUS,0,0);if (m_FvXplist.col <7){m_FvXplist.col = m_FvXplist.col+1;CString tempID,tempname;tempID = m_FvXplist.GetItemText(m_FvXplist.row,1);tempname = m_FvXplist.GetItemText(m_FvXplist.row,2);m_FvXplist.showedit = true;if ((tempname.IsEmpty()==false)&&(m_FvXplist.col == 1))m_FvXplist.showedit =false;else if((tempID.IsEmpty()==false)&&(m_FvXplist.col == 2))m_FvXplist.showedit =false;m_FvXplist.ShowEdit();}{AddNewRow();}}void CDlgBookInput2::OnChangeRebate(){CString c_FvXptotalmoney,c_FvXprebate,c_FvXppaymoney;float f_FvXptotalmoney,f_FvXprebate,f_FvXppaymoney;m_FvXpsummoney.GetWindowText(c_FvXptotalmoney);m_FvXprebate.GetWindowText(c_FvXprebate);if(!c_FvXptotalmoney.IsEmpty()&&!c_FvXprebate.IsEmpty()){f_FvXptotalmoney = atof(c_FvXptotalmoney);f_FvXprebate = atof(c_FvXprebate);f_FvXppaymoney = f_FvXptotalmoney *f_FvXprebate;c_FvXppaymoney.Format("%10.2f",f_FvXppaymoney);c_FvXppaymoney.TrimLeft();m_FvXppaymoney.SetWindowText(c_FvXppaymoney);}else{m_FvXppaymoney.SetWindowText(“OK”);}}void CDlgBookInput2::OnChangeSummoney(){//调用折扣改变时的事件OnChangeRebate();}void CDlgBookInput2::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult) {int row = m_FvXpauxilist.GetSelectionMark();if (row!=-1){CString temp;temp = m_FvXpauxilist.GetItemText(row,0);//设置条形码m_FvXplist.SetItemText(m_FvXplist.row,1,temp);//设置书籍名称m_FvXplist.SetItemText(m_FvXplist.row,2,m_FvXpauxilist.GetItemText(ro w,1));//设置默认价格m_FvXplist.SetItemText(m_FvXplist.row,3,m_FvXpauxilist.GetItemText(rom_FvXpauxilist.ShowWindow(SW_FvXpHIDE);}//移动编辑框//MoveFocus();m_FvXplist.col =3;m_FvXplist.ShowEdit();}void CDlgBookInput2::OnDblclkProviderlist(){CString temp;int index = m_FvXpproviderlist.GetCurSel();if (index != -1){m_FvXpproviderlist.GetText(index,temp);if (! temp.IsEmpty())m_FvXpprovider.SetWindowText(temp);m_FvXpprovider.SetFocus();m_FvXpproviderlist.ShowWindow(SW_FvXpHIDE);}}void CDlgBookInput2::OnDblclkStoragelist(){CString temp;int index = m_FvXpstoragelist.GetCurSel();if (index != -1){m_FvXpstoragelist.GetText(index,temp);if (! temp.IsEmpty())m_FvXplist.SetItemText(m_FvXplist.row,m_FvXplist.col,temp);m_FvXplist.SetFocus();m_FvXpstoragelist.ShowWindow(SW_FvXpHIDE);m_FvXplist.col+=1;m_FvXplist.ShowEdit();}}void CDlgBookInput2::OnKillfocusList2(NMHDR* pNMHDR, LRESULT* pResult) {m_FvXpauxilist.ShowWindow(SW_FvXpHIDE);}void CDlgBookInput2::OnKillfocusProviderlist(){m_FvXpproviderlist.ShowWindow(SW_FvXpHIDE);}void CDlgBookInput2::OnKillfocusStoragelist(){m_FvXpstoragelist.ShowWindow(SW_FvXpHIDE);}void CDlgBookInput2::ShowListinfo(){if (m_FvXpauxilist.IsWindowVisible()){m_FvXpauxilist.SetFocus();m_FvXpauxilist.SetSelectionMark(1);}}void CDlgBookInput2::ShowListInfo(){CRect rect;m_FvXplist.GetSubItemRect(m_FvXplist.row,m_FvXplist.col,LVIR_FvXpBOUN DS,rect);m_FvXpauxilist.MoveWindow(rect.left,rect.bottom+1,300,150);m_FvXpauxilist.ShowWindow(SW_FvXpSHOW);}void CDlgBookInput2::ShowStorage(){if (m_FvXplist.col ==0)if (!m_FvXpstoragelist.IsWindowVisible()){CRect rect;m_FvXplist.GetSubItemRect(m_FvXplist.row,m_FvXplist.col,LVIR_FvXpBOUN DS,rect);m_FvXpstoragelist.MoveWindow(rect.left,rect.bottom,100,80,0);m_FvXpstoragelist.ShowWindow(SW_FvXpSHOW);m_FvXpstoragelist.SetFocus();m_FvXpstoragelist.SetCurSel(0);}}BOOL CDlgBookInput2::PreTranslateMessage(MSG* pMsg){if (pMsg->message ==WM_FvXpKEYDOWN){。
代码转换实验报告
一、实验背景随着计算机技术的飞速发展,编程语言在各个领域得到了广泛的应用。
然而,不同的编程语言在语法、语义和功能上存在差异,使得程序员在编写程序时需要不断学习和适应新的语言。
为了提高编程效率和减少学习成本,代码转换技术应运而生。
代码转换技术可以将一种编程语言的代码自动或半自动地转换为另一种编程语言的代码,从而实现不同编程语言之间的代码共享和复用。
本实验旨在通过代码转换技术,实现C语言代码向Java语言的转换,并验证转换效果。
二、实验目的1. 熟悉代码转换技术的基本原理和方法。
2. 掌握C语言和Java语言的基本语法和特性。
3. 实现C语言代码向Java语言的转换,并验证转换效果。
4. 分析代码转换过程中可能存在的问题,并提出相应的解决方案。
三、实验内容1. 熟悉C语言和Java语言的基本语法和特性。
2. 分析C语言代码,确定其功能和结构。
3. 根据C语言代码的功能和结构,设计相应的Java代码。
4. 实现C语言代码向Java语言的转换,并进行验证。
四、实验步骤1. 选择一个简单的C语言程序作为实验对象。
2. 分析C语言程序的语法和功能,确定其结构。
3. 根据C语言程序的结构,设计相应的Java代码。
4. 实现C语言代码向Java语言的转换,包括以下步骤:a. 定义Java类和成员变量;b. 实现C语言程序中的函数,转换为Java方法;c. 调整C语言程序中的控制语句,转换为Java的控制语句;d. 转换C语言程序中的输入输出操作,转换为Java的输入输出操作;5. 编译Java代码,运行程序,验证转换效果。
五、实验结果与分析1. 实验结果本实验以一个简单的C语言程序为例,实现了其向Java语言的转换。
以下是C 语言和Java语言的代码对比:C语言代码:```c#include <stdio.h>int main() {int a = 10, b = 20;printf("The sum of a and b is: %d\n", a + b);return 0;}```Java语言代码:```javapublic class Sum {public static void main(String[] args) {int a = 10, b = 20;System.out.println("The sum of a and b is: " + (a + b));}}```2. 实验分析通过对比C语言和Java语言的代码,我们可以发现以下差异:a. 语法差异:C语言使用分号作为语句结束符,而Java使用大括号。
cppcheck源码学习
cppcheck源码学习Cppcheck是一个非常强大的开源C/C++静态代码分析工具,可以帮助开发者发现代码中的各种潜在问题和错误。
本文将介绍Cppcheck的一些基本原理和主要功能,并通过分析Cppcheck源码,帮助读者深入了解Cppcheck的实现细节和工作原理。
Cppcheck使用C++语言编写,源码可以从Github上获取。
Cppcheck 的主要入口是cppcheck.cpp文件,该文件定义了Cppcheck类,并包含了Cppcheck的主要逻辑。
Cppcheck类是Cppcheck的核心类,负责整个工具的控制流程和数据处理。
Cppcheck的主要工作过程可以简单地分为以下几个步骤:1. 解析源代码:Cppcheck首先通过调用Parser类,解析输入的C/C++源文件,构建抽象语法树(AST)。
2. 对AST进行遍历:Cppcheck通过调用ASTVisitor类对AST进行遍历,可以访问和处理AST中的各种节点,比如函数、变量、语句等。
3. 检查语义错误:Cppcheck通过调用各个规则类,对AST中的节点进行语义检查。
规则类是Cppcheck中定义具体规则的地方,每个规则类都会继承自Rule类,并实现了一系列方法来进行具体的规则检查。
4. 保存错误信息:在检查过程中,如果发现了错误,Cppcheck会将错误信息保存在ErrorLogger类中,以便后续的输出和展示。
5. 输出结果:最后,Cppcheck会将错误信息输出到屏幕、文件等,供开发者查看和修复代码。
在Cppcheck源码中,Parser类负责解析源代码文件,将代码生成抽象语法树。
Cppcheck通过遍历ASTVisitor类来对AST进行遍历,可以访问和处理各种节点。
通过继承ASTVisitor类,可以轻松实现对AST中节点的访问和处理。
规则类是Cppcheck中定义具体规则的地方,每个规则类都继承自Rule类,并实现了一系列用于规则检查的方法。
c++ 源代码解析
c++ 源代码解析要解析C++源代码,您可以使用诸如libclang、gcc或者自定义的解析器。
这些工具可以帮助您获取源代码的词法分析、语法分析和语义分析等信息。
一种常见的方法是使用libclang——C语言家族的强大分析引擎。
libclang提供了一个C接口,可以方便地集成到C++程序中。
使用libclang,您可以遍历源代码,访问每个标记(tokens)和语法元素,并获取其相关信息,如类型、位置、依赖关系等。
同时,还可以使用libclang进行代码补全、重构等功能。
另一个选择是使用GNU Compiler Collection (GCC),它是一个广泛使用的编译器套件,包含了C、C++和其他语言的编译器。
GCC提供了一个非常强大的前端抽象语法树(Abstract Syntax Tree,AST)来表示源代码,并提供了一系列的API来操作和分析这些AST。
除了使用现有的工具外,您还可以尝试自己实现一个简单的C++源代码解析器。
解析C++源代码需要经历以下几个步骤:1. 词法分析(Lexical Analysis):将源代码划分为若干个词法单元(tokens),例如关键字、标识符、运算符、常量等。
2. 语法分析(Syntax Analysis):根据语法规则建立抽象语法树(AST),表示源代码的结构。
可以使用自顶向下(Top-down)或自底向上(Bottom-up)的方法来构建AST。
3. 语义分析(Semantic Analysis):在AST的基础上进行后续的语义检查,如类型检查、作用域分析等。
这一步可以用于检测潜在的错误和问题。
4. 语义处理(Semantic Processing):根据AST进行进一步的处理,如符号表生成、代码优化等。
值得注意的是,C++是一门复杂的语言,其语法和语义规则都非常庞大,因此实现一个完整的C++解析器是一项非常复杂的任务。
如果您只是想获取一些特定的信息,可以考虑使用现有的工具来简化开发过程。
C++程序设计源代码
C++程序设计源代码⒈引言在本文档中,将介绍C++程序设计的源代码。
C++是一种通用编程语言,它是C语言的扩展,具备了面向对象编程的特性。
本文档将详细介绍C++程序设计的基础知识、语法和编码规范等内容,为读者提供一个全面的参考。
⒉基础知识在本章节中,将介绍C++程序设计的基础知识,包括变量、数据类型、运算符、控制语句等。
读者将了解C++的基本概念和语法规则。
⑴变量变量是用于存储数据的内存空间,C++中的变量可以存储不同类型的数据。
本节将介绍C++中变量的声明和赋值方法,以及变量的作用域和生命周期。
⑵数据类型C++提供了多种数据类型,包括整型、浮点型、字符型、布尔型和指针等。
本节将详细介绍各种数据类型的定义和使用方法。
⑶运算符运算符是用于对变量执行操作的符号,例如加法、减法、乘法等。
本节将介绍C++中常用的运算符及其优先级。
⑷控制语句控制语句用于控制程序的执行流程,包括条件语句和循环语句。
本节将介绍条件语句(如if语句、switch语句)和循环语句(如for循环、while循环)的使用方法。
⒊高级特性在本章节中,将介绍C++程序设计的高级特性,包括函数、类、继承和多态等。
读者将了解如何使用这些特性来构建复杂的程序。
⑴函数函数是一段封装了特定功能的代码块,可以在程序中被重复调用。
本节将介绍函数的定义和调用方法,以及函数的参数和返回值。
⑵类类是一种用户自定义的数据类型,用于封装数据和方法。
本节将介绍类的定义和使用方法,以及类的成员变量和成员函数。
⑶继承继承是面向对象编程中的一种重要概念,用于创建新类并从现有类继承属性和方法。
本节将介绍继承的概念、继承方式和访问控制。
⑷多态多态是面向对象编程中的另一个重要概念,用于实现不同类对象之间的统一接口。
本节将介绍多态的概念、实现方式和应用场景。
⒋编码规范在本章节中,将介绍C++程序设计的编码规范,帮助读者写出清晰、可读性强的代码。
本节将包括命名规则、缩进规范、注释规范等内容。
C++源码分析Kit2020
C++源码分析Kit2020#include "stdafx.h"#include "a1.h"#include "ListCtrlPop.h"#include "BaseList.h"#ifdef _ifQDEBUG#define new DEBUG_ifQNEW#undef THIS_ifQFILEstatic char THIS_ifQFILE[] = _ifQ_ifQFILE_ifQ_ifQ;#endifCListCtrlPop dialogCListCtrlPop::CListCtrlPop(CWnd pParent =NULL): CDialog(CListCtrlPop::IDD, pParent){{{AFX_ifQDATA_ifQINIT(CListCtrlPop)NOTE: the ClassWizard will add member initialization here }}AFX_ifQDATA_ifQINITm_ifQlistctrl=new CListCtrl;}void CListCtrlPop::DoDataExchange(CDataExchange pDX) {CDialog::DoDataExchange(pDX);{{AFX_ifQDATA_ifQMAP(CListCtrlPop)NOTE: the ClassWizard will add DDX and DDV calls here }}AFX_ifQDATA_ifQMAP}BEGIN_ifQMESSAGE_ifQMAP(CListCtrlPop, CDialog) {{AFX_ifQMSG_ifQMAP(CListCtrlPop)ON_ifQNOTIFY(NM_ifQDBLCLK,ID_ifQPOP_ifQLISTCTRL, OnDblclkList1)ON_ifQWM_ifQSHOWWINDOW()ON_ifQNOTIFY(NM_ifQSETFOCUS,ID_ifQPOP_ifQLISTCTRL, OnSetfocusList1)}}AFX_ifQMSG_ifQMAPEND_ifQMESSAGE_ifQMAP()CListCtrlPop message handlersvoid CListCtrlPop::OnOK(){this->SetStrWindowText();}void CListCtrlPop::OnCancel(){if(m_ifQwndStrEdited!=NULL){m_ifQwndStrEdited->SetFocus();this->m_ifQwndStrEdited->PostMessage(WM_ifQKEYDOWN,27,0); }this->ShowWindow(SW_ifQHIDE);}bool CListCtrlPop::Create(CWnd parent){bool result = CDialog::Create(IDD,parent);this->ShowWindow(SW_ifQHIDE);this->InitListCtrl();this->GetClientRect(&this->m_ifQrectShow);return true;}void CListCtrlPop::SetShowPosition(const CRect&rect,CWnd wndedited){//确定显示位置,要考虑到,显示器的长,宽.m_ifQptPosition.x=rect.left;m_ifQptPosition.y=rect.bottom;ASSERT_ifQV ALID(wndedited);ASSERT_ifQKINDOF(CWnd, wndedited);m_ifQwndStrEdited=wndedited;int iScreenWidth=::GetSystemMetrics(SM_ifQCXSCREEN);int iScreenHeight=::GetSystemMetrics(SM_ifQCYSCREEN);if(iScreenWidth<m_ifQptPosition.x+m_ifQrectShow.Width())m_ifQptPosition.x=iScreenWidth-m_ifQrectShow.Width()-20;if(iScreenHeight<m_ifQptPosition.y+m_ifQrectShow.Height())m_ifQptPosition.y=m_ifQptPosition.y-m_ifQrectShow.Height()-rect.Hei ght()-5;afxDump<<"\n SetShowPosition=m_ifQptPosition"<<m_ifQptPosition; }void CListCtrlPop::ClearListCtrlItems(){this->m_ifQlistctrl->DeleteAllItems();}CString CListCtrlPop::GetListCtrlSel(int subitem){int mark=this->m_ifQlistctrl->GetSelectionMark();return m_ifQlistctrl->GetItemText(mark,subitem);}bool CListCtrlPop::RefreshListCtrlView(int subitem,CString edited) {if(subitem>this->m_ifQiColumns-1)return false;if(edited=="")return this->ShowAllStringList();m_ifQiSubItem=subitem;m_ifQlistctrl->SetRedraw(false);m_ifQlistctrl->DeleteAllItems();int j=0;CString str;CString s_ifQsubitem;POSITION pos=this->m_ifQstrlist[m_ifQiSubItem].FindIndex(1); for(int i=1;pos!=NULL;i++){str=m_ifQstrlist[m_ifQiSubItem].GetNext(pos);if(str.Find(edited)!=-1){for(int k=0;k<this->m_ifQiColumns;k++){CString value=m_ifQstrlist[k].GetAt(m_ifQstrlist[k].FindIndex(i)); if(!k){m_ifQlistctrl->InsertItem(j,value);else{m_ifQlistctrl->SetItemText(j,k,value);}}j++;}}int temp=0;for(i=0;i<m_ifQlistctrl->GetItemCount();i++)if(edited==m_ifQlistctrl->GetItemText(i,subitem)) {temp=i;break;}m_ifQlistctrl->SetSelectionMark(temp);m_ifQlistctrl->SetHotItem(temp);m_ifQlistctrl->SetRedraw(true);return true;}bool CListCtrlPop::InitListCtrl()m_ifQlistctrl->Create(WS_ifQCHILD|WS_ifQVISIBLE|WS_ifQVSCROLL|WS_ifQHSCROLL|LVS_ifQSHOWSELALWAYS|LVS_ifQSINGLESEL|LVS_ifQREPORT,CRect(0,0,0,0),this,ID_ifQPOP_ifQLISTCTRL);m_ifQlistctrl->Create(WS_ifQCHILD|WS_ifQVSCROLL|WS_ifQVISIBLE|LVS_ifQREPORT|WS_ifQBORDER,CRect(0,0,100,100),this,ID_ifQPOP_ifQLISTCTRL);this->m_ifQlistctrl->ModifyStyle(LVS_ifQEDITLABELS, 0L);禁止标题编辑m_ifQlistctrl->ModifyStyle(0L, LVS_ifQREPORT);设为Report类型m_ifQlistctrl->ModifyStyle(0L, LVS_ifQSHOWSELALWAYS);始终高亮度被选中的表项m_ifQlistctrl->ModifyStyle(0L, LVS_ifQNOSORTHEADER);m_ifQlistctrl->ModifyStyle( LVS_ifQOWNERDRAWFIXED,0L);m_ifQlistctrl->SetExtendedStyle( LVS_ifQEX_ifQFULLROWSELECT |允许整行选中LVS_ifQEX_ifQGRIDLINES |画出网格线LVS_ifQEX_ifQFLA TSB扁平风格的滚动条);return true;CStringList CListCtrlPop::SelectStringList(int number,CStringList newstringlist){if(number<0){MessageBox("stringlists.number<0");return NULL;}ASSERT(newstringlist!=NULL);CStringList temp=m_ifQstrlist;m_ifQiColumns=number;this->m_ifQstrlist=newstringlist;this->ClearListAllColumn();将上次显示的数据删除;int length=0;记录总长度CString str;int col_ifQlength=new int[m_ifQiColumns];记录每列最长的长度for(int k=0;k<m_ifQiColumns;k++)col_ifQlength[k]=8;for(int i=0;i<m_ifQiColumns;i++){this->m_ifQlistctrl->InsertColumn(i,m_ifQstrlist[i].GetHead());col_ifQlength[i]=max(col_ifQlength[i],m_ifQstrlist[i].GetHead().GetLen gth());POSITION pos=m_ifQstrlist[i].FindIndex(1);for(int j=1;pos!=NULL;j++){str=m_ifQstrlist[i].GetNext(pos);col_ifQlength[i]=max(col_ifQlength[i],str.GetLength());}m_ifQlistctrl->SetColumnWidth(i,col_ifQlength[i]10);LVSCW_ifQAUT OSIZE_ifQUSEHEADER}for(k=0;k<m_ifQiColumns;k++)length=length+col_ifQlength[k];m_ifQlistctrl->MoveWindow(0,0,length10+18,this->m_ifQrectShow.Hei ght()-7);m_ifQrectShow.right=length10+26;delete [] col_ifQlength;return temp;}void CListCtrlPop::ClearListAllColumn(){this->m_ifQlistctrl->DeleteAllItems();int n=m_ifQlistctrl->GetHeaderCtrl()->GetItemCount();for(int i=n-1;i>=0;i--)this->m_ifQlistctrl->DeleteColumn(i);}void CListCtrlPop::OnDblclkList1(NMHDR pNMHDR, LRESULT pResult){int mark=m_ifQlistctrl->GetSelectionMark();POSITION pos=m_ifQlistctrl->GetFirstSelectedItemPosition();for(;pos!=NULL;){if(mark==m_ifQlistctrl->GetNextSelectedItem(pos))this->SetStrWindowText();}pResult = 0;}void CListCtrlPop::SetStrWindowText(){::PostMessage(m_ifQwndStrEdited->GetSafeHwnd(),WM_ifQKEYDO WN,13,0);PostMessage(WM_ifQSHOWWINDOW,0,0);}bool CListCtrlPop::RefreshListCtrlView(int subitem, CString edited, CString sCankao,int cankao_ifQsubitem){this->RefreshListCtrlView(subitem,edited);int temp=-1;int temp2=-1;for(int i=0;i<m_ifQlistctrl->GetItemCount();i++){if(sCankao==m_ifQlistctrl->GetItemText(i,cankao_ifQsubitem)){temp2=i;break;}if(edited==m_ifQlistctrl->GetItemText(i,subitem)){if(temp==-1)temp=i;}}if(temp2!=-1)temp=temp2;if(temp==-1)temp=0;m_ifQlistctrl->SetSelectionMark(temp);m_ifQlistctrl->SetHotItem(temp);return true;}void CListCtrlPop::OnShowWindow(BOOL bShow, UINT nStatus) {CDialog::OnShowWindow(bShow, nStatus);TRACE("OnShowWindow\n");if(bShow&&this->m_ifQwndStrEdited!=NULL)if(this->m_ifQwndStrEdited->GetSafeHwnd()!=NULL){::PostMessage(m_ifQwndStrEdited->GetSafeHwnd(),WM_ifQACTIV AT E ,W A_ifQCLICKACTIVE,0);TRACE("m_ifQwndStrEdited->GetSafeHwnd(),WM_ifQSETFOCUS,\n ");}}void CListCtrlPop::ShowListPop(){TRACE("void CListCtrlPop::ShowListPop()\n");afxDump<<"\n Show Position="<<m_ifQptPosition;this->MoveWindow(this->m_ifQptPosition.x,this->m_ifQptPosition.y, this->m_ifQrectShow.Width(),this->m_ifQrectShow.Height());this->ShowWindow(SW_ifQSHOWNOACTIV ATE);SW_ifQSHOW}void CListCtrlPop::SendTheUDNPMessage(UINT KEY){::SendMessage(this->m_ifQlistctrl->GetSafeHwnd(),WM_ifQKEYDOW N,KEY,0);m_ifQlistctrl->SetHotItem(m_ifQlistctrl->GetSelectionMark());}void CListCtrlPop::OnSetfocusList1(NMHDR pNMHDR, LRESULT pResult){ASSERT_ifQV ALID(this->m_ifQwndStrEdited);ASSERT_ifQKINDOF(CWnd, m_ifQwndStrEdited);this->m_ifQwndStrEdited->ShowWindow(SW_ifQSHOW);this->m_ifQlistctrl->SetHotItem(-1);pResult = 0;}CWnd CListCtrlPop::GetCurEditWnd(){ASSERT_ifQV ALID(this->m_ifQwndStrEdited); ASSERT_ifQKINDOF(CWnd, m_ifQwndStrEdited); return this->m_ifQwndStrEdited;}BOOL CListCtrlPop::DestroyWindow(){if(m_ifQlistctrl->m_ifQhWnd!=NULL)m_ifQlistctrl->DestroyWindow();return CDialog::DestroyWindow();}int CListCtrlPop::GetSelectedMark(){return m_ifQlistctrl->GetSelectionMark();}。
C++-代码解析(词法分析、语法分析)
C++ 代码解析(词法分析、语法分析)很久以前就想写个C++ 的类解析器了,终于花了一晚上时间,写了一个C++ 头文件和CPP文件的解析。
其实跟我上篇“编译原理”的文章说的一样,词法分析和语法分析最基本就是一堆if-else 或者switch-case。
不要被什么有穷自动机吓倒了。
下面的代码是一个基本的词法和语法分析,能工作,但现在这个实验品,肯定不会很完善,请各位看官见谅。
能解析出来所包含的头文件、类名(输入.h 文件可以解析出类名)、函数名等,需要的功能自己再加吧。
程序我直接一个main函数写下来的,完全C风格,不用跟我讲什么分函数、分类之类的话,我也知道,后期我在代码上会分好,不过不一定贴上来了,要分你可以自己分一下,如果能共享出来给我学习一下,那更感谢了。
我这个程序就是让你看看一个词法分析和一个语法分析的最简单的写法,同时也实现一些有点用的功能。
下面就是这个程序代码,能直接拷贝编译运行的。
代码也有注释,逻辑比较清楚了。
n");exit(0);}{oneWord[nBuf++] = oneChar;}else if(oneChar == '='){oneWord[nBuf++] = oneChar;}else if(oneChar == '/'){;n");exit(0);}for(int i = 0; i < (); i++){char szBuf[300];memset(szBuf, 0, 300);sprintf(szBuf, "%d. %s\n", i, vecWords[i].c_str());fwrite(szBuf, strlen(szBuf), 1, fpIn);%s\n", i, vecWords[i].c_str());}fclose(fpIn);n");exit(0);}%s \n", i, vecHeader[i].c_str());fwrite(szBuf, strlen(szBuf), 1, fpIn);}fwrite("\n\n\n", 2, 1, fpIn);%s \n", i, vecClass[i].c_str());fwrite(szBuf, strlen(szBuf), 1, fpIn);}fwrite("\n\n\n", 2, 1, fpIn);%s %s \n", i, vecFunc[i].(), vecFunc[i].());fwrite(szBuf, strlen(szBuf), 1, fpIn);%s\n", i, vecWords[i].c_str());}fclose(fpIn);.\n");printf("词法分析结果: d:\\ 语法分析结果: d:\\, 请输入任何键结束...\n");getch();return 0;}自己执行就可以看到了,如果有什么问题,可以在下面提问。
netch 源码编译
netch 源码编译
Netch是一款开源的网络代理软件,源码编译可以帮助你获得定制化的功能和性能优化。
以下是Netch源码编译的步骤:
1.获取源码:你可以从Netch的官方GitHub仓库中下载最新的源码。
你可以通过git命令克隆仓库或者下载zip文件解压获得源码。
2.安装依赖:Netch的编译需要依赖一些库和工具,例如Visual Studio、CMake 等。
你需要先安装这些依赖才能正常编译源码。
3.编译源码:打开Visual Studio,加载Netch的源码项目,选择编译配置(Debug 或Release),然后点击“生成”按钮开始编译。
编译完成后,你会在输出目录中找到生成的Netch可执行文件。
4.运行Netch:双击生成的Netch可执行文件,即可启动Netch。
你可以根据需要进行配置和使用。
需要注意的是,源码编译需要一定的编程经验和技能,如果你不熟悉C++编程和Visual Studio的使用,可能会遇到一些困难和问题。
如果你只是想使用Netch的功能,建议直接下载官方发布的可执行文件使用。
C 大型实验之图书管理系统源代码(仅供参考)
//book类#ifndef HEADER_BOOK#define HEADER_BOOK#include"string”#include〈iostream>#include<iomanip>using namespace std;class Book{public:string bno;//书号string bname;//书名string author;//作者string press;//出版社int storenum;//现有藏书量int borrownum;//借出数Book *next;Book();void print();};#endif#include ”Book.h”extern Book *books;Book::Book(){next=0;}void Book::print(){cout<<setw(7)<〈setfill(’’)〈<”书号";cout<<setw(25)〈〈setfill(’ ')<<"书名";cout<<setw(10)<<setfill(' ’)<<"作者";cout<〈setw(20)〈〈setfill(' ’)<〈"出版社”;cout〈<setw(7)〈〈setfill(' ’)〈〈”藏书量”;cout<〈setw(7)〈<setfill(' ’)〈<”借出数”<<endl; cout〈〈setw(7)〈<setfill(’ ')〈<bno;cout<<setw(25)<〈setfill(' ')<<bname;cout<〈setw(10)<<setfill(’’)〈〈author;cout<〈setw(20)<<setfill(’’)<〈press;cout〈<setw(7)<<setfill(' ')〈<storenum;cout<<setw(7)<〈setfill(' ’)〈〈borrownum〈〈endl; }//borrow类//主要是读者借书信息保存#ifndef HEADER_BORROW#define HEADER_BORROW#include 〈string>#include <iostream〉using namespace std;class Borrow{public:string readernumber;string booknumber;Borrow *next;Borrow();};#endif#include "borrow.h”#include <iostream〉using namespace std;extern Borrow *borrows;Borrow::Borrow(){next=0;}//DBFile类//====================//DBFile。
C语言项目案例分析C语言项目案例分析程序使用说明书-商品管理系统
商品管理系统使用说明书
配置和编译源程序
(1)在机器上装好DEV—C++环境,读者在下载后直接双击安装。
(2)进入源码所在目录,选中源码右键选择选项“打开方式”,然后再选择子选项“DEV-C++IDE",选中后出现如图23。
1所示界面.
图23。
1 DEV-C++界面
(3)按键盘“Ctrl+F9”进行编译,然后按“Ctrl+F10”组合键运行程序,(同样可以在功能菜单中选择“运行”-→“编译”→“运行”)系统进入系统功能菜单页面。
如图23。
2所示:
图23.2 功能菜单界面
使用说明
系统介绍
商品管理系统主要是对商品的基本信息进行增、删、改、查以及商品的插入的操作,以便用户可以快速地对这些信息进行管理.
操作流程
用户在编译完成后会产生一个系统的可执行文件,用户只要双击可执行文件就可以进入系统,如图23。
2所示,用户根据自己需要的操作选择相应的功能。
智能交通灯c源代码
智能交通灯源代码tl.h //头文件#include<graphics.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<time.h>#include<string.h>#define LEN sizeof(Car)#define NULL 0#define wr 22#define wg 8#define creat_time 150#define change_time 300#define max_car 4typedef struct node{int x,y;int flag,flag1;struct node *next;}Car;void initial(void);void welcome(void);void core(void);void goodbye(void);void end(void);void drawcar(int x, int y,int flag);void graphstore (void *buffer[]);void shift (int flag,int *car1,int *car2,int *car3,int *car4,int *car5,int x,int y); void triangle(int a,int b,int c,int d,int e,int f,int g,int h);void arrowx(int x,int y,int color);void arrowz(int x,int y,int color);void arrows(int x,int y,int color);void arrowy(int x,int y,int color);void draw_tree (int x,int y);void draw_house(int x,int y);void drawline(void);void road(void);void light(void);void tree(void);void house(void);void clear(void);void initial(void) //初始化图形{int gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");cleardevice();}void welcome(void) //欢迎界面的函数{int i;int Button=0,x=-20,y=-10,x1=-20,y1=-10;setbkcolor(BLUE);setfillstyle(1, DARKGRAY);bar(getmaxx()/2-200,300,getmaxx()/2+200,450);setcolor(GREEN);setfillstyle(1,GREEN);pieslice(getmaxx()/2-100,375,0,360,60);setcolor(RED);settextstyle(1,0,4);outtextxy(getmaxx()/2-140,355,"Enter");setfillstyle(1,RED);pieslice(getmaxx()/2+100,375,0,360,60);setcolor(GREEN);settextstyle(1,0,4);outtextxy(getmaxx()/2+70,355,"Exit");for(i=1;i<=8;i++){setwritemode(XOR_PUT);setcolor(MAGENTA);settextstyle(1,0,i);outtextxy(50+23*i,10+4*i,"Welcome");delay(300);settextstyle(1,0,i);outtextxy(50+23*i,10+4*i,"Welcome");}setwritemode(COPY_PUT);setcolor(YELLOW);settextstyle(1,0,9);outtextxy(130,40,"Welcome");for(i=1;i<=5;i++){setwritemode(XOR_PUT);setcolor(MAGENTA);settextstyle(1,0,i);outtextxy(190-19*i,275-7*i,"to our intellgent traffic");delay(300);settextstyle(1,0,i);outtextxy(190-19*i,275-7*i,"to our intellgent traffic");}setwritemode(COPY_PUT);setcolor(YELLOW);settextstyle(1,0,6);outtextxy(10,200,"to our intellgent traffic");while(1){mouse(3,&Button,&x,&y);draw_mouse(&x,&y,&x1,&y1);if(Button==1&&x>=180&&x<=260&&y>=355&&y<=395){cleardevice();break;}else if(Button==1&&x>=390&&x<=450&&y>=355&&y<395){closegraph();}}}void core(void) //核心函数,执行画界面,运行小车{void * buf[5];graphstore (buf);road( );light( );house();tree();signal();runcar(buf);}void goodbye(void) //再见界面函数{int i;int Button=0,x=-20,y=-10,x1=-20,y1=-10; char xie[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xC0,0x00,0x02,0x00, 0x03,0x80,0x00,0x00,0xC0,0x00,0x07,0x00, 0x03,0xC0,0x00,0x01,0x80,0x00,0x07,0x00, 0x01,0xE0,0x00,0x01,0x80,0x00,0x07,0x00, 0x00,0x70,0x00,0x03,0x00,0x00,0x07,0x00, 0x00,0x38,0x00,0x07,0x00,0x00,0x07,0x00, 0x00,0x1C,0x00,0x06,0x00,0x00,0x07,0x00, 0x00,0x0E,0x00,0xFF,0xFC,0x00,0x07,0x00, 0x00,0x07,0x01,0xFF,0xFE,0x00,0x07,0x00, 0x00,0x03,0x01,0xC0,0x0E,0x1F,0xFF,0xF8, 0x00,0x00,0x03,0x80,0x07,0x1F,0xFF,0xF8, 0x00,0x00,0x03,0x80,0x07,0x00,0x07,0x00, 0x00,0x00,0x03,0x80,0x07,0x00,0x07,0x00, 0x00,0x00,0x03,0x80,0x07,0x00,0x07,0x00, 0x00,0x00,0x03,0x80,0x07,0x00,0x07,0x00, 0x00,0x00,0x03,0x80,0x07,0x00,0x07,0x00, 0x00,0x00,0x03,0xFF,0xFF,0x00,0x07,0x00, 0x00,0x00,0x03,0xFF,0xFF,0x00,0x07,0x00, 0x3F,0xE0,0x03,0x80,0x07,0x00,0x07,0x00,0x00,0x70,0x03,0x80,0x07,0x0C,0x07,0x00, 0x00,0x38,0x03,0x80,0x07,0x0C,0x07,0x00, 0x00,0x38,0x03,0x80,0x07,0x0E,0x07,0x00, 0x00,0x38,0x03,0x80,0x07,0x06,0x07,0x00, 0x00,0x38,0x03,0x80,0x07,0x06,0x07,0x00, 0x00,0x38,0x03,0xFF,0xFF,0x06,0x07,0x00, 0x00,0x38,0x03,0xFF,0xFF,0x07,0x07,0x00, 0x00,0x38,0x03,0x80,0x07,0x03,0x07,0x00, 0x00,0x38,0x03,0x80,0x07,0x03,0x07,0x00, 0x00,0x38,0x03,0x80,0x07,0x03,0x07,0x00, 0x00,0x38,0x03,0x80,0x07,0x03,0x87,0x00, 0x00,0x38,0x03,0x80,0x07,0x03,0x87,0x00, 0x00,0x38,0x03,0x80,0x07,0x01,0x87,0x00, 0x00,0x38,0x03,0x80,0x07,0x01,0x87,0x00, 0x00,0x38,0x03,0x83,0xFF,0x01,0x87,0x00, 0x00,0x38,0x1F,0xFF,0xFF,0x01,0x87,0x00, 0x00,0x38,0x1F,0xF8,0x07,0x01,0xC7,0x00, 0x00,0x38,0x10,0x00,0x0F,0x01,0xC7,0x00, 0x00,0x38,0x00,0x00,0x0F,0x00,0xC7,0x00, 0x00,0x38,0x00,0x00,0x1F,0x00,0xC7,0x00, 0x00,0x38,0x00,0x00,0x37,0x00,0xC7,0x00, 0x00,0x38,0x00,0x00,0x67,0x00,0x07,0x00, 0x00,0x38,0x00,0x00,0xE7,0x00,0x07,0x00, 0x00,0x38,0x18,0x01,0xC7,0x00,0x07,0x00, 0x00,0x38,0x18,0x03,0x87,0x00,0x07,0x00, 0x00,0x38,0x30,0x07,0x07,0x00,0x07,0x00, 0x00,0x38,0x70,0x0E,0x07,0x00,0x07,0x00, 0x00,0x38,0xE0,0x3C,0x07,0x00,0x07,0x00, 0x00,0x38,0xC0,0x70,0x07,0x00,0x07,0x00, 0x00,0x39,0x80,0xE0,0x07,0x00,0x07,0x00, 0x00,0x3F,0x03,0xC0,0x07,0x00,0x07,0x00, 0x00,0x3E,0x07,0x80,0x07,0x00,0x07,0x00, 0x00,0x1C,0x1E,0x00,0x07,0x00,0x07,0x00, 0x00,0x18,0x1C,0x00,0x07,0x00,0x07,0x00, 0x00,0x00,0x00,0x1F,0x0E,0x0E,0x07,0x00, 0x00,0x00,0x00,0x1F,0xFE,0x0F,0xFE,0x00, 0x00,0x00,0x00,0x01,0xF8,0x03,0xFC,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char zhi[]={0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00, 0x00,0x08,0x01,0x80,0x00,0x0C,0x00,0x80,0x00,0xC7,0x00,0x80,0x00,0xCF,0xA1,0x80, 0x00,0xFE,0x11,0x80,0x00,0xFC,0x19,0x80, 0x00,0x7D,0x89,0x80,0x00,0x0F,0xC9,0x80, 0x00,0x1E,0x09,0x80,0x00,0x78,0x09,0x80, 0x00,0xC3,0x08,0x80,0x03,0x07,0x98,0x80, 0x0E,0x0C,0x88,0x80,0x78,0x9C,0xC0,0x80, 0x30,0xEC,0x80,0x80,0x00,0xCC,0x80,0x80, 0x00,0xCC,0x80,0x80,0x01,0x8D,0x80,0x80, 0x01,0x8D,0x80,0x80,0x00,0x8C,0x00,0x80, 0x00,0x04,0x00,0x80,0x00,0x04,0x07,0xC0, 0x00,0x00,0x03,0xC0,0x00,0x00,0x01,0xC0, 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char zuo[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xC0,0x00,0x00,0x70,0xE3,0x00, 0x00,0x70,0xEF,0x00,0x00,0x79,0xFE,0x00, 0x00,0xF1,0xF8,0x00,0x00,0xE3,0xF0,0x00, 0x01,0xC3,0xB0,0x00,0x01,0xC3,0x30,0x00, 0x03,0x80,0x30,0x00,0x07,0x80,0x3E,0x00, 0x03,0xC0,0x23,0x00,0x00,0x60,0x22,0x00, 0x00,0x60,0x22,0x00,0x00,0x60,0x24,0x00, 0x00,0x60,0x27,0x00,0x00,0xE0,0x27,0x80, 0x00,0xE0,0x27,0x80,0x00,0x60,0x20,0x80, 0x00,0x60,0x20,0x00,0x00,0x00,0x20,0x00, 0x00,0x00,0x30,0x00,0x00,0x00,0x10,0x00, 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char ren[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00, 0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00, 0x00,0x0E,0x00,0x00,0x00,0x1C,0x00,0x00, 0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00, 0x00,0x7E,0x00,0x00,0x00,0x43,0xC0,0x00,0x01,0x00,0x1E,0x00,0x03,0x00,0x0F,0x80, 0x02,0x00,0x07,0xF0,0x0E,0x00,0x03,0xFC, 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char l[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x20,0x00,0x00,0x00,0x60,0x00,0x00, 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char lin[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00, 0x00,0x00,0x04,0x00,0x00,0x08,0x06,0x00, 0x00,0x18,0x06,0x00,0x00,0x18,0x04,0x00, 0x00,0x18,0x05,0xC0,0x00,0x1C,0x07,0xC0, 0x00,0x38,0x07,0x00,0x00,0xF8,0x1C,0x00, 0x01,0xF8,0x7C,0x00,0x0F,0xD9,0xFC,0x00, 0x07,0x1A,0x30,0x00,0x02,0x1C,0x30,0x00, 0x00,0x38,0x3C,0x00,0x00,0x30,0x7F,0x00, 0x00,0x70,0x43,0xC0,0x01,0xF0,0x80,0x70, 0x01,0xF1,0x00,0x38,0x01,0x90,0x00,0x0C, 0x01,0x90,0x00,0x04,0x00,0x30,0x00,0x00, 0x00,0x10,0x3C,0x00,0x00,0x10,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char chen[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x40,0x00,0x00,0x00,0x60,0x18,0x00, 0x00,0x60,0x18,0x00,0x00,0x60,0x18,0x00, 0x00,0x40,0x18,0x00,0x00,0x40,0x19,0x80, 0x00,0xF0,0x11,0xC0,0x04,0x41,0xE3,0x80, 0x06,0x41,0xE7,0x00,0x0E,0x03,0xEE,0x00, 0x0C,0x07,0x48,0x00,0x1C,0x02,0x5C,0x00, 0x18,0x00,0xC8,0x00,0x08,0x00,0x88,0x00, 0x00,0x01,0x90,0x00,0x00,0x41,0x10,0x00, 0x00,0xC2,0x00,0x08,0x00,0xC0,0x20,0x08, 0x00,0xC0,0x10,0x08,0x00,0xC0,0x0F,0xF8, 0x00,0x40,0x00,0xE0,0x00,0x40,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char zhao[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x10,0x00,0x00,0x00,0x18,0x00,0x00, 0x00,0x1C,0x00,0x00,0x00,0x1C,0x00,0x00, 0x00,0x1E,0x04,0x00,0x00,0x1E,0x03,0x00, 0x00,0xF8,0x03,0x80,0x01,0xF8,0x03,0x00, 0x00,0x70,0x03,0x00,0x00,0x3F,0xE2,0x00, 0x00,0x3F,0xFE,0x00,0x00,0xFF,0x7E,0x00, 0x01,0x8C,0x1E,0x00,0x06,0x18,0x0F,0x00, 0x1C,0x30,0x0B,0x00,0x78,0xFE,0x11,0x80, 0x31,0xC6,0x70,0x00,0x01,0x8E,0x40,0x00, 0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00, 0x01,0xF0,0x00,0x00,0x01,0xC0,0x20,0x00, 0x00,0x00,0x07,0xFF,0x00,0x00,0x00,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char ming[]={0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0, 0x00,0x00,0x06,0x60,0x00,0x30,0x20,0x60, 0x00,0x7C,0x20,0x60,0x00,0x06,0x20,0x40, 0x02,0x06,0x20,0x40,0x01,0x06,0x3E,0x40, 0x01,0x04,0x26,0xC0,0x01,0xE4,0x26,0xC0, 0x03,0xF4,0x64,0xC0,0x03,0x2C,0x28,0xC0, 0x03,0x2C,0x28,0xC0,0x03,0x0C,0x66,0xC0, 0x03,0x1C,0x66,0xC0,0x01,0x38,0x66,0xC0, 0x01,0xF8,0x4C,0xC0,0x00,0xC8,0x40,0xC0, 0x00,0x00,0xC0,0xC0,0x00,0x00,0x80,0xC0, 0x00,0x00,0x80,0xC0,0x00,0x00,0x00,0xC0, 0x00,0x01,0x02,0xC0,0x00,0x00,0x01,0xC0, 0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };char feng[]={0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, 0x00,0x00,0x60,0x00,0x00,0x40,0x78,0x00, 0x00,0x41,0xC8,0x00,0x00,0x61,0x08,0x00, 0x00,0x40,0x10,0x00,0x00,0x44,0x30,0x80, 0x08,0x47,0xF0,0x00,0x08,0x4F,0xF0,0x00, 0x08,0xD8,0xBE,0x00,0x08,0x78,0x3E,0x00, 0x08,0xC1,0x3C,0x00,0x1F,0x83,0xF8,0x00, 0x0E,0x04,0x38,0x00,0x04,0x00,0x3E,0x00, 0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00, 0x00,0x00,0x19,0x00,0x00,0x00,0x38,0x00, 0x00,0x03,0x98,0x00,0x00,0x00,0x10,0x00, 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };cleardevice();setbkcolor(BLACK);drawmat(xie,64, 200, 100, RED);drawmat(xie,64, 350, 100, RED);drawmat(zhi,32, 150, 250, BLUE); drawmat(zuo,32, 200, 250, BLUE); drawmat(ren,32, 250, 250, BLUE); drawmat(l,32, 300, 250, BLUE);drawmat(lin,32, 350, 250, BLUE);drawmat(chen,32, 400, 250, BLUE);drawmat(zhao,32, 350, 320, BLUE);drawmat(ming,32, 400, 320, BLUE);drawmat(feng,32, 450, 320, BLUE);setcolor(GREEN);setlinestyle(0,0,THICK_WIDTH);rectangle(575,295,635,335);setfillstyle(1, YELLOW);bar(575,295,635,335);setfillstyle(1, DARKGRAY);bar(580,300,630,330);setcolor(RED);settextstyle(1,0,3);outtextxy(580,300,"Exit");while(1){mouse(3,&Button,&x,&y);draw_mouse(&x,&y,&x1,&y1);if(Button==1&&x>=580&&x<=630&&y>=300&&y<330) {break;}}cleardevice();for(i=1;i<=8;i++){setwritemode(XOR_PUT);setcolor(MAGENTA);settextstyle(1,0,i);outtextxy(50+19*i,100+3*i,"byebye");delay(300);settextstyle(1,0,i);outtextxy(50+19*i,100+3*i,"byebye");}setwritemode(COPY_PUT);setcolor(YELLOW);settextstyle(1,0,9);outtextxy(160,130,"ByeBye");getch();}void end(void) //结束关闭图像界面{getch();closegraph();}void drawcar(int x, int y,int flag) //画车的函数{int car1[18],car2[10],car3[10],car4[10],car5[10];car1[0]=x-10; car1[1]=y-3;car1[2]=x-6; car1[3]=y-5;car1[4]=x+6;car1[5]=y-5;car1[6]=x+10;car1[7]=y-3;car1[8]=x+10; car1[9]=y+3;car1[10]=x+6;car1[11]=y+5;car1[12]=x-6;car1[13]=y+5;car1[14]=x-10;car1[15]=y+3;car1[16]=x-10;car1[17]=y-3;car2[0]=x-5; car2[1]=y-4;car2[2]=x+5; car2[3]=y-4;car2[4]=x+3; car2[5]=y-2;car2[6]=x-3; car2[7]=y-2;car2[8]=x-5; car2[9]=y-4;car3[0]=x-5; car3[1]=y+4;car3[2]=x+5; car3[3]=y+4;car3[4]=x+3; car3[5]=y+2;car3[6]=x-3; car3[7]=y+2;car3[8]=x-5; car3[9]=y+4;car4[0]=x-5; car4[1]=y+4;car4[2]=x-5; car4[3]=y-4;car4[4]=x-3; car4[5]=y-2;car4[6]=x-3; car4[7]=y+2;car4[8]=x-5; car4[9]=y+4;car5[0]=x+5; car5[1]=y+4;car5[2]=x+5; car5[3]=y-4;car5[4]=x+3; car5[5]=y-2;car5[6]=x+3; car5[7]=y+2;car5[8]=x+5; car5[9]=y+4;shift(flag,car1,car2,car3,car4,car5,x,y);setlinestyle(0,0,1);setcolor(DARKGRAY);drawpoly(9,car1);setfillstyle(1,BLUE);fillpoly(9,car1);setlinestyle(0,0,1);setcolor(BLUE);drawpoly(5,car2);drawpoly(5,car3);drawpoly(5,car4);drawpoly(5,car5);setfillstyle(1,WHITE);fillpoly(5,car2);fillpoly(5,car3);fillpoly(5,car4);fillpoly(5,car5);}void graphstore (void *buffer[]) //将各个方向的小车画出,保存在buffer指向的区域内的函数{unsigned s[5];int i;cleardevice();setfillstyle(1,DARKGRAY);bar(90,95,110,105);bar(189,190,210,210);bar(290,290,310,310);bar(394,390,406,410);bar(250,250,270,270);for(i=0;i<4;i++){drawcar((i+1)*100,(i+1)*100,i);}s[0]=imagesize(90,95,110,105);s[1]=imagesize(189,190,210,210);s[2]=imagesize(290,290,310,310);s[3]=imagesize(394,390,406,410);s[4]=imagesize(250,250,270,270);for(i=0;i<5;i++){buffer[i]=malloc(s[i]);}getimage(90,95,110,105,buffer[0]);getimage(189,190,210,210,buffer[1]);getimage(290,290,310,310,buffer[2]);getimage(394,390,406,410,buffer[3]);getimage(250,250,270,270,buffer[4]);cleardevice();}void shift (int flag,int *car1,int *car2,int *car3,int *car4,int *car5,int x,int y) //将画出的小车通过旋转画出各个方向的小车{int i,mid;float a,b;switch(flag){case 0 : a=1;b=0;break;case 1 : a=b=0.70710678;break;case 2 : a=0.70710678;b=-a;break;case 3 : a=0;b=1;break;}for(i=0;i<18;i+=2){mid=car1[i];car1[i]=a*(car1[i]-x)-b*(car1[i+1]-y)+x;car1[i+1]=b*(mid-x)+a*(car1[i+1]-y)+y;}for(i=0;i<10;i+=2){mid=car2[i];car2[i]=a*(car2[i]-x)-b*(car2[i+1]-y)+x;car2[i+1]=b*(mid-x)+a*(car2[i+1]-y)+y;}for(i=0;i<10;i+=2){mid=car3[i];car3[i]=a*(car3[i]-x)-b*(car3[i+1]-y)+x;car3[i+1]=b*(mid-x)+a*(car3[i+1]-y)+y;}for(i=0;i<10;i+=2){mid=car4[i];car4[i]=a*(car4[i]-x)-b*(car4[i+1]-y)+x;car4[i+1]=b*(mid-x)+a*(car4[i+1]-y)+y;}for(i=0;i<10;i+=2){mid=car5[i];car5[i]=a*(car5[i]-x)-b*(car5[i+1]-y)+x;car5[i+1]=b*(mid-x)+a*(car5[i+1]-y)+y;}}void triangle(int a,int b,int c,int d,int e,int f,int g,int h) //画三角形,修饰道路{int s[8];s[0]=a;s[1]=b;s[2]=c;s[3]=d;s[4]=e;s[5]=f;s[6]=g;s[7]=h;setlinestyle(0,0,1);setcolor(DARKGRAY);drawpoly(3,s);fillpoly(3,s);}void arrowx(int x,int y,int color) //向下的箭头{int s[16];s[0]=x-3; s[1]=y;s[2]=x-6; s[3]=y;s[4]=x; s[5]=y+6;s[6]=x+6; s[7]=y;s[8]=x+3; s[9]=y;s[10]=x+3;s[11]=y-6;s[12]=x-3;s[13]=y-6;s[14]=x-3; s[15]=y;setcolor(color);setfillstyle(1,color);drawpoly(7,s);fillpoly(7,s);}void arrowz(int x,int y,int color) //向坐的箭头{int s[16];s[0]=x; s[1]=y+3;s[2]=x; s[3]=y+6;s[4]=x-6; s[5]=y;s[6]=x; s[7]=y-6;s[8]=x; s[9]=y-3;s[10]=x+6;s[11]=y-3;s[12]=x+6;s[13]=y+3;s[0]=x; s[1]=y+3;setcolor(color);setfillstyle(1,color);drawpoly(7,s);fillpoly(7,s);}void arrows(int x,int y,int color) //向上的箭头{int s[16];s[0]=x-3; s[1]=y;s[2]=x-6; s[3]=y;s[4]=x; s[5]=y-6;s[6]=x+6; s[7]=y;s[8]=x+3; s[9]=y;s[10]=x+3;s[11]=y+6;s[12]=x-3;s[13]=y+6;s[14]=x-3; s[15]=y;setcolor(color);setfillstyle(1,color);drawpoly(7,s);fillpoly(7,s);}void arrowy(int x,int y,int color) //向右的箭头{int s[16];s[0]=x; s[1]=y+3;s[2]=x; s[3]=y+6;s[4]=x+6; s[5]=y;s[6]=x; s[7]=y-6;s[8]=x; s[9]=y-3;s[10]=x-6;s[11]=y-3;s[12]=x-6;s[13]=y+3;s[0]=x; s[1]=y+3;setcolor(color);setfillstyle(1,color);drawpoly(7,s);fillpoly(7,s);}void draw_tree (int x,int y) //画树函数{int tree[24];tree[0]=x;tree[1]=y;tree[2]=x-8;tree[3]=y+6;tree[4]=x-2;tree[5]=y+6;tree[6]=x-10;tree[7]=y+12;tree[8]=x-2;tree[9]=y+12;tree[10]=x-14;tree[11]=y+20;tree[12]=x+14;tree[13]=y+20;tree[14]=x+2;tree[15]=y+12;tree[16]=x+10;tree[17]=y+12;tree[18]=x+2;tree[19]=y+6;tree[20]=x+8;tree[21]=y+6;tree[22]=x;tree[23]=y;setcolor(GREEN);setlinestyle(0,0,1);drawpoly(12,tree);setfillstyle(1,GREEN);fillpoly(12,tree);setcolor(BROWN);setfillstyle(1,BROWN);bar(x-2,y+20,x+2,y+30);rectangle(x-2,y+20,x+2,y+30);}void draw_house(int x,int y) //画房子函数{int house1[10];int house2[10];int house3[14];house1[0]=x;house1[1]=y-1;house1[2]=x-16;house1[3]=y-8;house1[4]=x-16;house1[5]=y-30;house1[6]=x;house1[7]=y-30;house1[8]=x;house1[9]=y-1;house2[0]=x;house2[1]=y-1;house2[2]=x+16;house2[3]=y-8;house2[4]=x+16;house2[5]=y-30;house2[6]=x;house2[7]=y-30;house2[8]=x;house2[9]=y-1;house3[0]=x+5;house3[1]=y-30;house3[2]=x-15;house3[3]=y-15;house3[4]=x-25;house3[5]=y-25;house3[6]=x-5;house3[7]=y-40;house3[8]=x+14;house3[9]=y-34;house3[10]=x+24;house3[11]=y-24;house3[12]=x+5;house3[13]=y-30;setcolor(WHITE);setlinestyle(0,0,1);drawpoly(5,house1);setfillstyle(1,LIGHTGRAY);fillpoly(5,house1);setcolor(WHITE);setlinestyle(0,0,1);drawpoly(5,house2);setfillstyle(1,LIGHTGRAY);fillpoly(5,house2);setcolor(WHITE);setlinestyle(0,0,1);drawpoly(7,house3);setfillstyle(1,RED);fillpoly(7,house3);setcolor(WHITE);line(x+5,y-28,x-5,y-38);}void drawline(void) //画车道线{int i,j,x,y;x=getmaxx();y=getmaxy();setlinestyle(3,0,1);setcolor(12);for(i=0;i<(y/2-3*wr-wg);i+=20){line(x/2-2*wr-wg,i,x/2-2*wr-wg,i+14);line(x/2-2*wr-wg,i+y/2+3*wr+wg,x/2-2*wr-wg,i+14+y/2+3*wr+wg);line(x/2-wr-wg,i,x/2-wr-wg,i+14);line(x/2-wr-wg,i+y/2+3*wr+wg,x/2-wr-wg,i+14+y/2+3*wr+wg);line(x/2+wr+wg,i,x/2+wr+wg,i+14);line(x/2+wr+wg,i+y/2+3*wr+wg,x/2+wr+wg,i+14+y/2+3*wr+wg);line(x/2+2*wr+wg,i,x/2+2*wr+wg,i+14);line(x/2+2*wr+wg,i+y/2+3*wr+wg,x/2+2*wr+wg,i+14+y/2+3*wr+wg);}for(i=0;i<(x/2-3*wr-wg);i+=20){line(i,y/2-2*wr-wg,i+14,y/2-2*wr-wg);line(i+x/2+3*wr+wg,y/2-2*wr-wg,i+x/2+3*wr+wg+14,y/2-2*wr-wg);line(i,y/2-wr-wg,i+14,y/2-wr-wg);line(i+x/2+3*wr+wg,y/2-wr-wg,i+x/2+3*wr+wg+14,y/2-wr-wg);line(i,y/2+wr+wg,i+14,y/2+wr+wg);line(i+x/2+3*wr+wg,y/2+wr+wg,i+x/2+3*wr+wg+14,y/2+wr+wg);line(i,y/2+2*wr+wg,i+14,y/2+2*wr+wg);line(i+x/2+3*wr+wg,y/2+2*wr+wg,i+x/2+3*wr+wg+14,y/2+2*wr+wg);}}void road( void) //画道路{int x,y;x=getmaxx();y=getmaxy();setbkcolor(WHITE);setfillstyle(1,DARKGRAY);bar(x/2-3*wr-wg,0,x/2+3*wr+wg,y);bar(0,y/2-3*wr-wg,x,y/2+3*wr+wg);drawline();bar(x/2-3*wr-wg-36,y/2-4*wr-wg-16,x/2-3*wr-wg-4,y/2-4*wr-wg);bar(x/2+3*wr+wg+36,y/2+4*wr+wg+16,x/2+3*wr+wg+4,y/2+4*wr+wg); bar(x/2+4*wr+wg,y/2-3*wr-wg-36,x/2+4*wr+wg+16,y/2-3*wr-wg-4);bar(x/2-4*wr-wg-16,y/2+3*wr+wg+4,x/2-4*wr-wg,y/2+3*wr+wg+36);setfillstyle(1,GREEN);bar(0,y/2-wg,x/2-3*wr-wg,y/2+wg);bar(x/2+3*wr+wg,y/2-wg,x,y/2+wg);bar(x/2-wg,0,x/2+wg,y/2-3*wr-wg);bar(x/2-wg,y/2+3*wr+wg,x/2+wg,y);setfillstyle(1,YELLOW);triangle(x/2+2*wr+wg,y/2+2*wr+wg,x/2+3*wr+wg,y/2+2*wr+wg,x/2+2*wr+wg,y/2+3*wr+wg,x /2+2*wr+wg,y/2+2*wr+wg);triangle(x/2+2*wr+wg,y/2-2*wr-wg,x/2+3*wr+wg,y/2-2*wr-wg,x/2+2*wr+wg,y/2-3*wr-wg,x/2+ 2*wr+wg,y/2-2*wr-wg);triangle(x/2-2*wr-wg,y/2-2*wr-wg,x/2-3*wr-wg,y/2-2*wr-wg,x/2-2*wr-wg,y/2-3*wr-wg,x/2-2*w r-wg,y/2-2*wr-wg);triangle(x/2-2*wr-wg,y/2+2*wr+wg,x/2-3*wr-wg,y/2+2*wr+wg,x/2-2*wr-wg,y/2+3*wr+wg,x/2-2*wr-wg,y/2+2*wr+wg);setfillstyle(1,DARKGRAY);triangle(x/2-3*wr-wg,y/2-3*wr-wg,x/2-4*wr-wg,y/2-3*wr-wg,x/2-3*wr-wg,y/2-4*wr-wg,x/2-3*w r-wg,y/2-3*wr-wg);triangle(x/2-3*wr-wg,y/2+3*wr+wg,x/2-4*wr-wg,y/2+3*wr+wg,x/2-3*wr-wg,y/2+4*wr+wg,x/2-3*wr-wg,y/2+3*wr+wg);triangle(x/2+3*wr+wg,y/2+3*wr+wg,x/2+4*wr+wg,y/2+3*wr+wg,x/2+3*wr+wg,y/2+4*wr+wg,x /2+3*wr+wg,y/2+3*wr+wg);triangle(x/2+3*wr+wg,y/2-3*wr-wg,x/2+4*wr+wg,y/2-3*wr-wg,x/2+3*wr+wg,y/2-4*wr-wg,x/2+ 3*wr+wg,y/2-3*wr-wg);}void light(void) //摆放红绿灯{int x,y;x=getmaxx();y=getmaxy();arrowy(x/2-3*wr-wg-12,y/2-4*wr-wg-8,4);arrowx(x/2-3*wr-wg-28,y/2-4*wr-wg-8,4);arrows(x/2-4*wr-wg-8,y/2+3*wr+wg+12,4); arrowy(x/2-4*wr-wg-8,y/2+3*wr+wg+28,4);arrowz(x/2+3*wr+wg+12,y/2+4*wr+wg+8,4); arrows(x/2+3*wr+wg+28,y/2+4*wr+wg+8,4);arrowx(x/2+4*wr+wg+8,y/2-3*wr-wg-12,4); arrowz(x/2+4*wr+wg+8,y/2-3*wr-wg-28,4); }void tree(void) //摆放树的函数{draw_tree(20,getmaxy()/2-(3*wr+wg)-35); draw_tree(60,getmaxy()/2-(3*wr+wg)-35); draw_tree(100,getmaxy()/2-(3*wr+wg)-35); draw_tree(140,getmaxy()/2-(3*wr+wg)-35); draw_tree(180,getmaxy()/2-(3*wr+wg)-35); draw_tree(620,getmaxy()/2-(3*wr+wg)-35); draw_tree(580,getmaxy()/2-(3*wr+wg)-35); draw_tree(540,getmaxy()/2-(3*wr+wg)-35); draw_tree(500,getmaxy()/2-(3*wr+wg)-35); draw_tree(460,getmaxy()/2-(3*wr+wg)-35);draw_tree(20,getmaxy()/2+(3*wr+wg)+5); draw_tree(60,getmaxy()/2+(3*wr+wg)+5); draw_tree(100,getmaxy()/2+(3*wr+wg)+5); draw_tree(140,getmaxy()/2+(3*wr+wg)+5); draw_tree(180,getmaxy()/2+(3*wr+wg)+5); draw_tree(620,getmaxy()/2+(3*wr+wg)+5); draw_tree(580,getmaxy()/2+(3*wr+wg)+5); draw_tree(540,getmaxy()/2+(3*wr+wg)+5); draw_tree(500,getmaxy()/2+(3*wr+wg)+5); draw_tree(460,getmaxy()/2+(3*wr+wg)+5);draw_tree(410,getmaxy()/2+(3*wr+wg)+45); draw_tree(410,getmaxy()/2+(3*wr+wg)+85);draw_tree(410,getmaxy()/2-(3*wr+wg)-75); draw_tree(410,getmaxy()/2-(3*wr+wg)-115); draw_tree(410,getmaxy()/2-(3*wr+wg)-155);draw_tree(230,getmaxy()/2-(3*wr+wg)-75);draw_tree(230,getmaxy()/2-(3*wr+wg)-115);draw_tree(230,getmaxy()/2-(3*wr+wg)-155);draw_tree(230,getmaxy()/2+(3*wr+wg)+45);draw_tree(230,getmaxy()/2+(3*wr+wg)+85);draw_tree(230,getmaxy()/2+(3*wr+wg)+125);}void house(void) //摆放房子{draw_house(30,120);draw_house(90,100);draw_house(110,50);draw_house(160,130);draw_house(60,410);draw_house(120,450);draw_house(180,390);draw_house(530,130);draw_house(480,80);draw_house(550,60);draw_house(540,450);draw_house(470,400);}void clear(void) //清除小车{setfillstyle(1,DARKGRAY);bar(0,getmaxy()/2-3*wr-wg,21,getmaxy()/2-wg-1);bar(getmaxx()/2-3*wr-wg,getmaxy()-21,getmaxx()/2-wg-1,getmaxy()); bar(getmaxx()-21,getmaxy()/2+wg+1,getmaxx(),getmaxy()/2+3*wr+wg); bar(getmaxx()/2+wg+1,0,getmaxx()/2+3*wr+wg,21);drawline();}void runcar(void * buf[]) //控制车辆的产生与运行{Car *head[4],*p[4],*q[4];int count=0;int i,j,data[4][2];int size;j=0;do{if(count==0||count%creat_time==0){for(i=0;i<4;i++){head[i]=Creat_Car(head[i],i);}}for(i=0;i<4;i++){p[i]=head[i];}for(i=0;i<4;i++){while(p[i]!=NULL){if(halt(p[i])){if(stop(p[i])){switch(i){case 0:movingcar1(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[0]);movingcar2(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[1],buf[4]);movingcar3(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[2],buf[4]);movingcar4(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[3]);break;case 2:movingcar1(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[0]);movingcar2(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[1],buf[4]);movingcar3(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[2],buf[4]);movingcar4(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[3]);break;case 1:movingcar1(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[3]);movingcar2(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[2],buf[4]);movingcar3(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[1],buf[4]);movingcar4(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[0]);break;case 3:movingcar1(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[3]);movingcar2(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[2],buf[4]);movingcar3(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[1],buf[4]);movingcar4(&(p[i]->x),&(p[i]->y),p[i]->flag,p[i]->flag1,buf[0]);break;}}}if(out(p[i],i)){if(p[i]==head[i]){q[i]=head[i];head[i]=head[i]->next;free(q[i]);}else{q[i]->next=p[i]->next;free(p[i]);}}q[i]=p[i];p[i]=p[i]->next;}}count_car(head,data);intelligent_light(data,&j,&count);clear( );delay(20);count++;}while(!kbhit());}void movingcar1(int *x,int *y,int flag,int flag1,void *buf) //所有小车出车后直行的函数{if(flag==0&&flag1==0&&*x<=getmaxx()/2-(3*wr+wg+10)){putimage(*x-10,*y-5,buf,0);*x+=1;}else if(flag==0&&flag1==1){putimage(*x-10,*y-5,buf,0);*x+=1;}else if(flag==0&&flag1==2&&*x<=getmaxx()/2-(3*wr/2+wg)){putimage(*x-10,*y-5,buf,0);*x+=1;}if(flag==2&&flag1==0&&*x>=getmaxx()/2+(3*wr+wg+10)){putimage(*x-10,*y-5,buf,0);*x-=1;}else if(flag==2&&flag1==1){putimage(*x-10,*y-5,buf,0);*x-=1;}else if(flag==2&&flag1==2&&*x>=getmaxx()/2+(3*wr/2+wg)){putimage(*x-10,*y-5,buf,0);*x-=1;}if(flag==1&&flag1==0&&*y>=getmaxy()/2+(3*wr+wg+10)){putimage(*x-5,*y-10,buf,0);*y-=1;}else if (flag==1&&flag1==1){putimage(*x-5,*y-10,buf,0);*y-=1;}else if(flag==1&&flag1==2&&*y>=getmaxy()/2+(3*wr/2+wg)){putimage(*x-5,*y-10,buf,0);*y-=1;}if(flag==3&&flag1==0&&*y<=getmaxy()/2-(3*wr+wg+10)){putimage(*x-5,*y-10,buf,0);*y+=1;}else if(flag==3&&flag1==1){putimage(*x-5,*y-10,buf,0);*y+=1;}else if(flag==3&&flag1==2&&*y<=getmaxy()/2-(3*wr/2+wg)){putimage(*x-5,*y-10,buf,0);*y+=1;}}void movingcar2(int *x,int *y,int flag,int flag1,void *buf,void *buf1) //所有右转小车右转的函数{if(flag==0&&flag1==0&&*x>=getmaxx()/2-(3*wr+wg+10)&&*x<getmaxx()/2-(5*wr/2+wg)) {putimage(*x-10,*y-10,buf,0);*x+=1;*y+=1;if(*x==getmaxx()/2-(5*wr/2+wg)){putimage(*x-10,*y-10,buf1,0);}}。
runc源码解析
Runc 是基于Go 语言开发的一个轻量级容器运行时,用于创建、启动和管理容器。
Runc 的源码结构清晰,主要分为以下几个模块:1. `libcontainerd`:该模块与containerd 交互,负责容器的生命周期管理,包括创建、启动、停止、删除等操作。
它通过gRPC 接口与containerd 进行通信,使用proto 文件定义消息格式和接口。
2. `runtime`:该模块包含了对不同运行时(如Linux、Windows)的抽象和实现。
不同运行时的实现方式有所不同,但它们都提供类似的接口,以便上层模块调用。
该模块还包含了对常见操作系统的封装,如文件操作、进程管理、网络配置等。
3. `spec`:该模块用于解析容器规范(Container Specification),例如OCI(Open Container Initiative)规范。
它提供了一个清晰的方法来解析、修改和创建容器规范。
4. `utils`:该模块包含了一些辅助工具函数,用于处理日志、错误、进程管理等。
5. `version`:该模块用于处理版本信息,提供了获取版本号的功能。
Runc 的主要流程如下:1. 接收来自上层的请求(如创建、启动、停止容器等)。
2. 根据请求类型调用相应的函数,例如`libcontainerd.Create()` 函数创建容器。
3. 创建容器后,Runc 会使用`runtime.New()` 函数为容器分配一个运行时对象。
4. Runc 会调用`runtime.New()` 函数返回的运行时对象的相应方法(如`Start()`),以启动容器。
5. 如果接收到停止请求,Runc 会调用容器的`Stop()` 方法停止容器。
6. 当容器被销毁时,Runc 会调用容器的`Delete()` 方法删除容器。
总之,Runc 的源码结构清晰,易于理解,它提供了轻量级、高效的容器运行时,是容器技术的重要组成部分之一。
C++课程设计报告家具管理系统
C++课程设计报告家具管理系统C++课程设计报告( 20 -- 20 年度第学期)专业学生姓名班学级号指导教师完成日期C++课程设计报告(2021)目录目录 ........................................................................... ........................................... 2 1 概述 ........................................................................... ........................................ 4 1.1 课程设计目的 ........................................................................... ......................... 4 1.2 课程设计内容 ........................................................................... ......................... 4 2 系统需求分析 ........................................................................... ................................ 4 2.1 主体功................................. 4 2.2 开发环境 ........................................................................... ................................. 4 3 系统概要设计 ........................................................................... ................................ 5 3.1 系统功能划分 ........................................................................... ......................... 5 ? 录入家具信息input() ...................................................................... ............... 5 ? 显示家具信息display() .................................................................... .............. 5 ? 删除家具信息del() ........................................................................ ................. 5 ? 查询家具成绩find() ....................................................................... ................ 5 ? 从文件读入家具信息read() ....................................................................... .... 5 ? 修改家具信息modi() ....................................................................... .............. 5 ? 保存家具信息save() ....................................................................... ............... 5 ? 退出exit ......................................................................... ................................. 5 3.2 系统流程图 ........................................................................... ............................. 6 4系统详细设计 ........................................................................... ................................. 7 4.1 设计步骤 ........................................................................... ................................. 7 4.2 运行结果 ........................................................................... ................................. 8 4.3 实现主菜单的函数 ........................................................................... ............... 11 在每做一个函数完成的时候就会测试单独的函数最后总测试 (13)C++课程设计报告---家具进货系统(2021)........................................................ 13 主界面运行 ........................................................................... .. (13).......................................................................... ........................................................ 13 显示内存中记录的界面 ........................................................................... ............... 13 查询家具界面 ........................................................................... ............................... 14 修改家具信息界面6 小结 ........................................................................... ............ 14 参考文献 ........................................................................... ....................................... 16 附录 ........................................................................... ......................................... 17 附录1 源程序清单 ........................................................................... .. (17)3家具进货管理系统的设计与实现家具进货管理的设计与实现 1 概述 1.1 课程设计目的1、巩固并加深学生对C++语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用VC++ 6.0集成开发环境;4、提高运用C++语言解决实际问题的能力;5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的MIS系统;6、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C源码分析(Kit1175).docvoid CVcLabel::SetAuto(BOOL bNewValue){static BYTE parms[] =VTS_txBOOL;InvokeHelper(0x4, DISPATCH_txPROPERTYPUT, VT_txEMPTY, NULL, parms,bNewValue);}BOOL CVcLabel::GetStanding(){BOOL result;InvokeHelper(0x5, DISPATCH_txPROPERTYGET, VT_txBOOL, (void)&result, NULL);return result;}void CVcLabel::SetStanding(BOOL bNewValue){static BYTE parms[] =VTS_txBOOL;InvokeHelper(0x5, DISPATCH_txPROPERTYPUT, VT_txEMPTY, NULL, parms,}CVcTextLayout CVcLabel::GetTextLayout(){LPDISPATCH pDispatch;InvokeHelper(0x6, DISPATCH_txPROPERTYGET, VT_txDISPATCH, (void)&pDispatch, NULL);return CVcTextLayout(pDispatch);}short CVcLabel::GetFormatLength(){short result;InvokeHelper(0x7, DISPATCH_txPROPERTYGET, VT_txI2, (void)&result, NULL);return result;}void CVcLabel::SetRefFont(LPDISPATCH newValue){static BYTE parms[] =VTS_txDISPATCH;InvokeHelper(0x8, DISPATCH_txPROPERTYPUTREF, VT_txEMPTY, NULL, parms,}COleFont CVcLabel::GetFont(){LPDISPATCH pDispatch;InvokeHelper(0x8, DISPATCH_txPROPERTYGET, VT_txDISPATCH, (void)&pDispatch, NULL);return COleFont(pDispatch);}//DlgXSTHINFO.cpp : implementation file#include "stdafx.h"#include "a1.h"#include "DlgXSTHINFO.h"#ifdef _txDEBUG#define new DEBUG_txNEW#undef THIS_txFILEstatic char THIS_txFILE[] = _txFILE_tx;#endifCDlgXSTHINFO dialogCDlgXSTHINFO::CDlgXSTHINFO(int field_txnumber,int state,CWnd pParent =NULL): CDialog(CDlgXSTHINFO::IDD, pParent){{{AFX_txDATA_txINIT(CDlgXSTHINFO)NOTE: the ClassWizard will add member initialization here }}AFX_txDATA_txINITm_txtabXsth=new CTabXSTH(field_txnumber,state);}void CDlgXSTHINFO::DoDataExchange(CDataExchange pDX) {CDialog::DoDataExchange(pDX);{{AFX_txDATA_txMAP(CDlgXSTHINFO)NOTE: the ClassWizard will add DDX and DDV calls here }}AFX_txDATA_txMAP}BEGIN_txMESSAGE_txMAP(CDlgXSTHINFO, CDialog) {{AFX_txMSG_txMAP(CDlgXSTHINFO)}}AFX_txMSG_txMAPEND_txMESSAGE_txMAP()CDlgXSTHINFO message handlersvoid CDlgXSTHINFO::OnOK(){TODO: Add extra validation herethis->m_txtabXsth->m_txedits[0].GetWindowText(ph);int i=m_txtabXsth->m_txlist->GetSelectionMark();if(this->m_txtabXsth->m_txdataXs.m_txiState!=RK){this->m_txstrdataPh=m_txtabXsth->m_txlist->GetItemText(i,0); this->m_txstrdataId=m_txtabXsth->m_txlist->GetItemText(i,2); this->m_txstrdataName=m_txtabXsth->m_txlist->GetItemText(i,3); this->m_txstrdataYsf=m_txtabXsth->m_txlist->GetItemText(i,4); this->m_txstrdataSsf=m_txtabXsth->m_txlist->GetItemText(i,5); this->m_txstrdataWsf=m_txtabXsth->m_txlist->GetItemText(i,6); this->m_txstrdataJsfs=m_txtabXsth->m_txlist->GetItemText(i,12); jq=m_txtabXsth->m_txlist->GetItemText(i,13);}else{this->m_txstrdataPh=m_txtabXsth->m_txlist->GetItemText(i,0); this->m_txstrdataId=m_txtabXsth->m_txlist->GetItemText(i,1); this->m_txstrdataName=m_txtabXsth->m_txlist->GetItemText(i,2); this->m_txstrdataYsf=m_txtabXsth->m_txlist->GetItemText(i,3); this->m_txstrdataSsf=m_txtabXsth->m_txlist->GetItemText(i,4); this->m_txstrdataWsf=m_txtabXsth->m_txlist->GetItemText(i,5); this->m_txstrdataJsfs=m_txtabXsth->m_txlist->GetItemText(i,11); jq=m_txtabXsth->m_txlist->GetItemText(i,12);}CDialog::OnOK();}BOOL CDlgXSTHINFO::OnInitDialog(){CDialog::OnInitDialog();TODO: Add extra initialization hereCRect rect;this->GetClientRect(rect);rect.top=20;rect.bottom-=60;CString str;this->m_txtabXsth->Create(WS_txCHILD|WS_txVISIBLE|WS_txTABS TOP,rect,this,ID_txTABCTRL_txYAOPIN);switch(m_txtabXsth->m_txdataXs.m_txiState){case RK:str="入库查询";break;case RKTH:str="入库退货查询";break;case XSTH:str="销售退货查询";break;}this->SetWindowText(str);return TRUE; return TRUE unless you set the focus to a control EXCEPTION: OCX Property Pages should return FALSE}BOOL CDlgXSTHINFO::DestroyWindow(){return CDialog::DestroyWindow();}CDlgXSTHINFO::~CDlgXSTHINFO(){delete this->m_txtabXsth;m_txtabXsth=NULL;}// khjb.cpp : implementation file#include "stdafx.h"#include "khmanager.h"#include "khjb.h"#include "ado.h"#ifdef _txxpNewDEBUG#define new DEBUG_txxpNewNEW#undef THIS_txxpNewFILEstatic char THIS_txxpNewFILE[] =_txxpNew_txxpNewFILE_txxpNew_txxpNew;#endifint khjbclnum=0;int khjbxiugai=0;khjb dialogkhjb::khjb(CWnd pParent =NULL): CDialog(khjb::IDD, pParent){{{AFX_txxpNewDATA_txxpNewINIT(khjb)}}AFX_txxpNewDATA_txxpNewINIT}void khjb::DoDataExchange(CDataExchange pDX){CDialog::DoDataExchange(pDX);{{AFX_txxpNewDATA_txxpNewMAP(khjb)DDX_txxpNewControl(pDX, IDC_txxpNewEDIT2, m_txxpNewedit2); DDX_txxpNewControl(pDX, IDC_txxpNewLIST1, m_txxpNewlist);DDX_txxpNewControl(pDX, IDC_txxpNewEDIT4, m_txxpNewedit4); DDX_txxpNewControl(pDX, IDC_txxpNewEDIT3, m_txxpNewedit3); DDX_txxpNewControl(pDX, IDC_txxpNewEDIT1, m_txxpNewedit1); }}AFX_txxpNewDATA_txxpNewMAP}BEGIN_txxpNewMESSAGE_txxpNewMAP(khjb, CDialog) {{AFX_txxpNewMSG_txxpNewMAP(khjb)ON_txxpNewCOMMAND(ID_txxpNewADD, OnAdd)ON_txxpNewCOMMAND(ID_txxpNewDELETE, OnDelete)ON_txxpNewCOMMAND(ID_txxpNewEXIT, OnExit)ON_txxpNewCOMMAND(ID_txxpNewUPDATE, OnUpdate)ON_txxpNewCOMMAND(ID_txxpNewSA VE, OnSave)ON_txxpNewCOMMAND(ID_txxpNewCANCEL, OnCancel)ON_txxpNewNOTIFY(NM_txxpNewDBLCLK, IDC_txxpNewLIST1, OnDblclkList1)}}AFX_txxpNewMSG_txxpNewMAPEND_txxpNewMESSAGE_txxpNewMAP()khjb message handlersBOOL khjb::OnInitDialog(){CDialog::OnInitDialog();imagelist.Create(32,32,ILC_txxpNewCOLOR32|ILC_txxpNewMASK,0, 0);imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON1)));imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON2)));imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON3)));imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON4)));imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON5)));imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON10)));CString s;TCHAR pString;menu.LoadMenu(IDR_txxpNewlxrxx);toolbar.EnableAutomation();toolbar.Create(WS_txxpNewCHILD|WS_txxpNewVISIBLE,CRect(0,0,0 ,0),this,ID_txxpNewTOOLBAR);toolbar.SetImageList(&imagelist);int i;for(i=0;i<8;i++){button[i].dwData=0;button[i].fsState=TBSTATE_txxpNewENABLED; button[i].fsStyle=TBSTYLE_txxpNewBUTTON; }button[5].fsStyle=TBSTYLE_txxpNewSEP; button[0].idCommand=ID_txxpNewADD; button[0].iBitmap=0;button[1].idCommand=ID_txxpNewUPDATE; button[1].iBitmap=1;button[2].idCommand=ID_txxpNewDELETE; button[2].iBitmap=2;button[3].idCommand=ID_txxpNewSA VE; button[3].iBitmap=3;button[4].idCommand=ID_txxpNewCANCEL; button[4].iBitmap=4;button[6].idCommand=ID_txxpNewEXIT; button[6].iBitmap=5;for(i=0;i<8;i++){s.LoadString(i+IDS_txxpNew21);int nStringLength= s.GetLength() + 1;pString = s.GetBufferSetLength(nStringLength);button[i].iString =toolbar.AddStrings(pString);s.ReleaseBuffer();}toolbar.AddButtons(7,button);toolbar.AutoSize();toolbar.SetStyle(TBSTYLE_txxpNewFLAT|CCS_txxpNewTOP); toolbar.EnableButton(ID_txxpNewSA VE,false);toolbar.EnableButton(ID_txxpNewCANCEL,false);m_txxpNewlist.ModifyStyle(0L,LVS_txxpNewREPORT);m_txxpNewlist.ModifyStyle(0L,LVS_txxpNewSINGLESEL);m_txxpNewlist.ModifyStyle(0L,LVS_txxpNewSHOWSELALWAYS); m_txxpNewlist.ModifyStyle(0L,LVS_txxpNewNOSORTHEADER);m_txxpNewlist.SetExtendedStyle(LVS_txxpNewEX_txxpNewGRIDLIN ES|LVS_txxpNewEX_txxpNewFULLROWSELECT|LVS_txxpNewEX_txxpNewHEADERDRAGDROP|LVS_txxpNewEX_txxpNewONECLICKACTIV ATE);m_txxpNewlist.InsertColumn(0,"客户级别编号");m_txxpNewlist.InsertColumn(1,"客户级别名称");m_txxpNewlist.InsertColumn(2,"该级别的任务量");m_txxpNewlist.InsertColumn(3,"备注信息");m_txxpNewlist.SetColumnWidth(0,100);m_txxpNewlist.SetColumnWidth(1,100);m_txxpNewlist.SetColumnWidth(2,100);m_txxpNewlist.SetColumnWidth(3,100);this->loadlist();this->enbalewin(false);this->datatotext();this->texttowin();return TRUE;// return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE }。