怎么让主窗口打开的Dialog,MessageBox自动关闭?

netkid 2000-07-07 11:36:00
...全文
230 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
su 2000-07-09
  • 打赏
  • 举报
回复
用定时器和sendmessage
sun2000 2000-07-08
  • 打赏
  • 举报
回复
zlcad 2000-07-08
  • 打赏
  • 举报
回复
可以考虑使用定时器,在打开消息窗口之前设置定时器SetTimer(1,,,),在主窗口的定时消息处理程序中取消定时器并破坏消息窗口。
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉菜单 7 修改应用程序图标 7 系统只能允许一个程序运行 7 在状态栏中添加时间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit框中的Password不保密 11 在同一系统中显示GB字符和BIG5字符 12 改变颜色(整个窗体的控件) 13 改变工程表头栏 13 ◆如何找开一个DiaLog窗口◆ 13 ◆得到系统中设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生一个MDI的窗口◆ 15 ◆如何让一个文本控件显示出值◆ 15 ◆如何让一个控件显示出相应的值◆ 16 ◆在调试中怎么样MESSAGEBOX一个数字◆ 16 ◆如何控制控件的焦点◆ 16 ◆如何对析构函数中对象进行释放◆ 16 ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个窗口下方的状态条◆ 18 ◆如何让Cscrollview类中控制其可以流动区域大小◆ 19 ◆MFC中控件的一些基本控制方法◆ 19 ◆如何让一个数字型变量化为字符型变量◆ 19 ◆如何使用“拉动条”,“上下选择”◆ 19 ◆如何使用postmessage来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关控件属性◆ 22 ◆如何在程序中得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件中的数据录入的控制属性◆ 23 ◆哪些函数是文档、视图相互处理用的◆ 23 ◆如何建立一个基于对话框一程序◆ 23 ◆如何建立一个线程◆ 24 ◆如何让窗口产生一个图标(从应用程序资源中取出)◆ 24 ◆如何得到一个edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件中得到值◆ 25 ◆如何将图标文件写到窗口中◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、使用结构◆ 26 ◆如何在任意程序中显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话框中有一个滚动条是,当滚动滚动条时的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框中自定义一个消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的一个对话框◆ 29 ◆全局函数的申明问题◆ 29 ◆在应用程序中*APP.CPP中的InitInstance()的事件◆ 29 ◆给执行文件加一个图标◆ 30 ◆如何在全局函数中通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC里产生一个唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表里不可见)◆ 31 ◆如何得到一个确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动时阻止MDI应用程序创建一个新文档?◆ 33 ◆如何在多文档MFC程序中制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向一个文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、类型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话框中设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序窗口的指针? 38 3. 如何在程序中获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居中显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉菜单 7 修改应用程序图标 7 系统只能允许一个程序运行 7 在状态栏中添加时间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit框中的Password不保密 11 在同一系统中显示GB字符和BIG5字符 12 改变颜色(整个窗体的控件) 13 改变工程表头栏 13 ◆如何找开一个DiaLog窗口◆ 13 ◆得到系统中设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生一个MDI的窗口◆ 15 ◆如何让一个文本控件显示出值◆ 15 ◆如何让一个控件显示出相应的值◆ 16 ◆在调试中怎么样MESSAGEBOX一个数字◆ 16 ◆如何控制控件的焦点◆ 16 ◆如何对析构函数中对象进行释放◆ 16 ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个窗口下方的状态条◆ 18 ◆如何让Cscrollview类中控制其可以流动区域大小◆ 19 ◆MFC中控件的一些基本控制方法◆ 19 ◆如何让一个数字型变量化为字符型变量◆ 19 ◆如何使用“拉动条”,“上下选择”◆ 19 ◆如何使用postmessage来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关控件属性◆ 22 ◆如何在程序中得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件中的数据录入的控制属性◆ 23 ◆哪些函数是文档、视图相互处理用的◆ 23 ◆如何建立一个基于对话框一程序◆ 23 ◆如何建立一个线程◆ 24 ◆如何让窗口产生一个图标(从应用程序资源中取出)◆ 24 ◆如何得到一个edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件中得到值◆ 25 ◆如何将图标文件写到窗口中◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、使用结构◆ 26 ◆如何在任意程序中显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话框中有一个滚动条是,当滚动滚动条时的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框中自定义一个消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的一个对话框◆ 29 ◆全局函数的申明问题◆ 29 ◆在应用程序中*APP.CPP中的InitInstance()的事件◆ 29 ◆给执行文件加一个图标◆ 30 ◆如何在全局函数中通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC里产生一个唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表里不可见)◆ 31 ◆如何得到一个确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动时阻止MDI应用程序创建一个新文档?◆ 33 ◆如何在多文档MFC程序中制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向一个文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、类型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话框中设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序窗口的指针? 38 3. 如何在程序中获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居中显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动窗口 42 20、重置窗口的大小 42 21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止窗口在其说明中显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 45 26、如何创建一个不规则形状的窗口 45 27、如何在代码中获取工具条和状态条的指针 47 28、如何使能和禁止工具条的工具提示 47 29、如何设置工具条标题 48 30、如何创建和使用无模式对话框 48 31、如何在对话框中显示一个位图 49 32、如何改变对话或窗体视窗的背景颜色 49 33、如何获取一个对话控件的指针 50 34、如何禁止和使能控件 50 35、如何改变控件的字体 50 36、如何在OLE控件中使用OLE_COLOR数据类型 51 37、在不使用通用文件打开对话的情况下如何显示一个文件列表 51 38、为什么旋转按钮控件看起来倒转 51 39为什么旋转按钮控件不能自动地更新它下面的编辑控件 52 40、如何用位图显示下压按钮 52 41、如何一个创建三态下压按钮 52 42、如何动态创建控件 52 43、如何限制编辑框中的准许字符 53 44、如何改变控件的颜色 54 45、当向列表框中添加多个项时如何防止闪烁 55 46、如何向编辑控件中添加文本 55 47、如何访问预定义的GDI对象 55 48、如何获取GDI对象的属性信息 56 49、如何实现一个橡皮区矩形 56 50、如何更新翻转背景颜色的文本 58 51、如何创建一个具有特定点大小的字体 58 52、如何计算一个串的大小 59 53、如何显示旋转文本 59 54、如何正确显示包含标签字符的串 60 55、串太长时如何在其末尾显示一个省略号 60 56、如何快速地格式化一个CString对象 61 57、为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 61 58、如何给系统菜单添加一个菜单项 61 59、如何确定顶层菜单所占据的菜单行数 62 60、在用户环境中如何确定系统显示元素的颜色 62 问:如何控制窗口框架的最大最小尺寸? 63 问:如何改变窗口框架的颜色? 63 问:如何将应用程序窗口置于屏幕正中? 64 问:VC6.0对VC5.0的兼容性? 64 问:打印和打印机的问题? 64 问:CRichEditCtrl滚动条的问题? 65 问:从数据库中读大于32k的内容? 65 问:如何获得CRichEditCtrl中字符的位置? 66 问:如何限制mdi子框架最大化时的大小? 66 问:如何切换视口而不破坏它们? 66 问:改变列表控制时发生闪烁现象? 68 问:处理列表控件可见项的问题? 68 问:产生线程的问题? 68 问:CFile使用了缓冲区吗? 69 问:DAO的密码? 69 问:如何知道CListBox什么时候滚动了? 70 问:视口的不活动性如何处理? 70 问:如何使用COleClientItem的IDispatch接口? 70 问:关于用户自定义的消息使用? 71 问:在打开一个文档时退出? 71 问:在CListCtrl控件中多选择项的删除? 71 问:工作线程的登录状态? 72 问:如何控制菜单的大小? 72 问:改变LVIS_SELECTED的状态颜色? 73 问:如何只存储文档的某一部分? 73 问:保存工具条菜单有bug吗? 73 问:Tip of the day的bug 73 问:如何让我的mfc应用程序可以在最上面? 74 问:如何增加视图中ActiveX控件的事件处理函数? 75 问:如何创建一个动态的Tree控件? 75 问:SDI程序开始时不打开文档? 75 问:List控件中整栏选择? 75 问:如何重载MRU文件? 76 问:CImageList控件中图象橙色被显示为黄色? 76 问:无法正确改变应用程序的图标? 78 问:工具条状态的问题? 78 问:在SDI应用程序中使用Active控件? 79 问:有RichEdit控件的对话框无法正常显示? 79 问:DLL中的模板成员函数? 79 问:CFormView中的上下文帮助? 80 问:CArchive类的WriteObject函数问题? 80 问:RegisterWindowMessage中的BroadcastSystemMessage如何处理? 80 问:CListCtrl中选择变化时如何获得通知? 81 问:如何向ATL-COM对象传送一个数组? 81 问:如何选择CTreeCtrl中的节点文本进行编辑? 82 问:如何改变默认的光标形状? 82 问:如何用键盘滚动分割的视口? 83 问:如何在线程中处理状态条? 83 问:如何阻止WINDOWS关闭? 83 问:如何使一个按钮Disable? 83 问:怎样从MFC扩展动态链结库(DLL)中显示一个对话框? 84 问:想隐藏用户界面怎么办? 85 问:如何实现SDI与MDI的转换? 85 问:CDC中的竖排文本? 86 问:如何激活变灰的弹出菜单? 86 问:线程消息? 87 问:TreeCtrl控制的显示速度太慢? 87 怎样使窗口总是浮现在最上面? 88 改变拖放时的光标外形? 89 如何定位到最新的记录上? 90 MVC和Doc-View? 90 被禁止(Disable)的控件如何改变其文本或背景色? 90 有ODBC的查找函数吗? 91 多个MRU菜单的问题 91 校验框类问题 93 CFormView类的Fold按钮 94 视的背景色 94 隐藏控件台程序 94 修改SDI窗口标题 95 焦点问题 95 从一个OCX调用另一个OCX的方法。 95 得到视 96 字符转化时间 96 二进制还是文本方式? 99 发送消息 99 怎样知道菜单运行时的状态 99 DLL编译出错 100 通用控件的显示窗口 100 如何禁止和使能控件 100 如何在OLE控件中使用OLE_COLOR数据类型 100 在不使用通用文件打开对话的情况下如何显示一个文件列表 100 为什么旋转按钮控件看起来倒转 101 为什么旋转按钮控件不能自动地更新它下面的编辑控件 101 如何动态创建控件 101 如何显示旋转文本 101 在TreeList中使用Edit功能 102 TreeList control中使用check box 103 有关属性对话框(property sheet )的几个提示 108 在MFC加入"这是什么?"的帮助提示 111 精通工具条 112 如何改变视窗的背景颜色 112 为MFC应用程序添加全屏幕显示功能 112 VC常用数据类型使用转换详解 114 用Visual C++操作INI文件 117 单文档加入背景图 119 更新窗体方法 120 更改窗口控件的能动和不能动(以按钮控件为例) 120 窗口响应键盘事件 120 密码框输入受保护 121 最高窗口的实现 122 实现窗口动态写入汉字和改变汉字颜色形状 123
No.4 简单的MFC多对话框演示程序 “MultiDialog” 演示如何在工程中拥有多个对话框,及如何在一个对话框中调用另一个对话框。 重点:1、多个对话框类的建立;2、对话框的模式(Modal)调用方法;3、Spin控件的使用。 新建一个基于对话框的MFC工程, 通过菜单"Insert>>Resource"打开添加资源对话框, 在其中选择Dialog后点击New创建一个新的对话框 按Ctrl+W打开ClassWizard,系统会提示刚才创建了一个新的对话框资源,是否建立对应的类, 选择建立,然后在New Class窗口中Class Name栏输入它的名称:CSubClass1, 确定后系统会自动生成SubClass1.h和SubClass1.cpp并加入工程中,其中有已经创建好的CSubClass1的类的基本代码。 把这个对话框的Caption属性改为“难度选择”,在它上面画三个Radio“简单”、“标准”、“困难”, 并建立相关联的变量m_Option1。(要注意的是在ClassWizard中注意Class Name中应该选CSubClass1而不是之前的对话框类) 按照相同方法建立第二个新对话框,类名“CSubClass2”,Caption为“关卡选择”。 在上面画一个Edit和一个Spin,注意先画Edit后画Spin,将Spin的Auto buddy和Set buddy integer勾上。 按Ctrl+W打开ClassWizard,为Edit建立关联变量,不过注意是int型而不是CString型, 也为Spin建立关联变量m_Spin1,注意这次是Control型变量CSpinButtonCtrl。 下面为这两个对话框添加代码。 双击“难度选择”对话框的OK按钮,建立对话框的OnOK映射。 在其中加入(在CDialog::OnOK();之前): UpdateData(TRUE); if ((m_Option1>2) ||(m_Option1<0)) { MessageBox("错误的选择!","提示",MB_OK); return; } 下面对“关卡选择”对话框添加初始化代码, 由于关卡的有效值只有1到6,因此需要在初始化时设置Spin控件的有效值范围。 按Ctrl+W打开ClassWizard,在左侧列表选择这个对话框类CSubDialog2, 在右侧列表中选择WM_INITDIALOG,点击右边的“Add Function...”按钮, 接着点击右边的“Edit Code”按钮,在其中中加入(在CDialog::OnInitDialog()那句之后,在return TRUE那句之前): m_Spin1.SetRange(1,6); m_Text1=1; m_Spin1.SetPos(1); 其中CSpinButtonCtrl::SetRange()函数的作用是设置和他关联的Spin控件的范围,两个参数分别是下界和上界。 而CSpinButtonCtrl::SetPos()是设定Spin的当前位置。 两个新的对话框都已建立完毕,下来是如何在对话框中使用的问题。 首先,两个新对话框都有各自的类,分别在SubDialog1.h和SubDialog2.h中有定义。(类的细节则在对应的cpp中定义) 因此,对话框想要调用这两个新对话框,需要先包含这两个头文件, 在你要使用的地方(本例是MultiDialogDlg.cpp中)文件前面加上 #include "SubDialog1.h" #include "SubDialog2.h" 然后在想要调用的地方就可以使用了。 本例中,首先为窗口的两个Edit建立CString型关联变量m_Text1和m_Text2, 然后在两个按钮的消息映射函数中分别加入: CSubDialog1 dialog1; //定义CSubDialog1型对话框的一个新对象 dialog1.DoModal(); //使用“模式”调用,显示对话框 m_Text1.Format("%d",dialog1.m_Option1); //此句在上面对话框没有关闭前不会执行到 UpdateData(FALSE); 和 CSubDialog2 dialog1; dialog1.DoModal(); m_Text2.Format("%d",dialog1.m_Text1); UpdateData(FALSE); 其中第一句均为定义对话框新实例的语句,定义一个你想要的类型的对话框。 第二句是通过调用CDialog::DoModal()方法,来显示这个对话框,并进入“模式”(Modal)状态 在“模式”状态,当子对话框没有关闭之前,调用它的父对话框不能被响应, 并且其语句执行会停留在刚才的DoModal语句上等待,直到子对话框关闭才接着执行下一个语句。 第三第四句将子对话框得到的数据(即类的成员变量)显示在父对话框的Edit上。 四句执行完后退出该函数,这时刚才定义的CSubDialog1等对话框类变量被销毁,因此创建的话框也被销毁。
第1章 Java语言的GUI历史 2 1.1 最初的AWT 2 1.2 Swing工具包 3 1.3 Eclipse的诞生 3 1.4 Eclipse贡献SWT工具包 5 1.4.1 SWT的结构 6 1.4.2 SWT所支持的操作系统 6 1.5 Sun AWT/Swing与Eclipse SWT 7 1.5.1 Swing与SWT的比较 7 1.5.2 SWT的优势和不足 8 1.6 SWT与JFace、Eclipse 9 1.6.1 JFace是SWT的扩展 9 1.6.2 Eclipse的UI界面基于JFace 10 1.7 本章小结 10 第2章 配置SWT开发环境 11 2.1 下载和安装Eclipse 11 2.1.1 Eclipse下载页面介绍 11 2.1.2 下载Eclipse 12 2.1.3 安装Eclipse语言包 14 .2.1.4 在不同的语言中切换 15 2.2 直接获取SWT工具包 16 2.3 下载和安装Visual Editor 17 2.3.1 Visual Editor的下载 17 2.3.2 Visual Editor的安装 18 2.4 第一个SWT程序 19 2.4.1 创建SWT程序 19 2.4.2 编译和运行程序 20 2.5 本章小结 21 第3章 Eclipse开发环境概述 22 3.1 Eclipse界面一览 22 3.2 Eclipse项目的文件结构 23 3.2.1 设置编译后.class文件的保存目录 23 3.2.2 导入项目使用的包 25 3.2.3 设置编译方式 26 3.2.4 运行程序 27 3.3 常用的代码编辑功能 28 3.3.1 添加注释 28 3.3.2 自定义格式化代码 28 3.3.3 自动生成getter和setter代码 30 3.3.4 代码的重构 31 3.3.5 查看源代码 31 3.3.6 代码的展开和折叠 32 3.3.7 代码比较 33 3.3.8 子类中覆盖父类的方法 34 3.4 代码错误提示 34 3.4.1 如何定位错误 34 3.4.2 自动修正错误 35 3.5 文件查找 35 3.5.1 文件内部查找 35 3.5.2 项目内查找 36 3.6 使用快捷键 36 3.6.1 显示快捷键说明 37 3.6.2 自定义快捷键 37 3.7 本章小结 38 第2篇 SWT进阶篇 第4章 SWT开发基础 40 4.1 SWT应用程序基本结构 40 4.2 Display类 42 4.2.1 Display类概述 42 4.2.2 Display类常用方法 42 4.3 Shell类 45 4.3.1 Shell类概述 45 4.3.2 不同窗口的样式 46 4.3.3 应用多个样式 47 4.3.4 Shell类的要方法 47 4.3.5 创建多个窗口 49 4.4 SWT包类结构 51 4.5 本章小结 52 第5章 SWT基本组件 53 5.1 SWT控件类概述 53 5.1.1 窗口小部件:Widget 53 5.1.2 Widget的继承关系 53 5.1.3 SWT中的子类 54 5.1.4 控件(Controls)与面板(Composites) 55 5.1.5 Widgets不是Controls 55 5.2 按钮(Button) 58 5.2.1 普通按钮(SWT.PUSH) 58 5.2.2 切换按钮(SWT.TOGGLE) 59 5.2.3 箭头按钮(SWT.ARROW) 60 5.2.4 单选按钮(SWT.RADIO) 60 5.2.5 多选按钮(SWT.CHECK) 61 5.2.6 常用的方法 63 5.3 标签(Label) 64 5.3.1 文本标签 64 5.3.2 分割线标签 64 5.3.3 自定义标签(CLabel) 65 5.4 文本框(Text) 65 5.4.1 文本框的样式 66 5.4.2 文本框程序示例 66 5.4.3 常用的方法 68 5.5 列表框(List) 69 5.5.1 列表框的样式 69 5.5.2 列表框程序示例 70 5.5.3 常用的方法 73 5.6 组合框(Combo) 74 5.6.1 组合框的样式 75 5.6.2 组合框程序示例 75 5.6.3 组合框的常用方法 77 5.6.4 自定义组合框CCombo类 77 5.7 本章小结 78 第6章 面板容器类 79 6.1 面板类(Composite) 79 6.1.1 面板类的样式 79 6.1.2 面板类的常用方法 80 6.2 分组框(Group) 80 6.3 选项卡(TabFolder) 81 6.3.1 选项卡的基本构成 81 6.3.2 设置底部显示选项卡 82 6.3.3 设置选项卡图标 82 6.3.4 选项卡的常用方法 83 6.4 自定义选项卡(CTabFolder ) 83 6.4.1 带有“关闭”按钮的选项卡 84 6.4.2 带有边框的选项卡 85 6.4.3 显示“最大化/最小化”按钮 85 6.4.4 设置选项卡的颜色和背景图片 85 6.4.5 仿Eclipse编辑区的选项卡 87 6.4.6 限制选项卡文字的长度 90 6.4.7 设置右上角控件 91 6.4.8 自定义选项的常用方法 91 6.5 分割窗框(SashForm) 92 6.5.1 分割窗框的样式 92 6.5.2 设置窗框显示的比例 93 6.5.3 设置窗框最大化所显示的控件 93 6.6 自定义分割框(CBanner) 94 6.6.1 改变分割线的外观 95 6.6.2 Eclipse中的CBanner 95 6.7 滚动面板(ScrolledComposite) 95 6.7.1 设置滚动条的样式 96 6.7.2 滚动面板的其他方法 97 6.8 本章小结 97 第7章 SWT布局管理器 98 7.1 布局管理器概述 98 7.1.1 绝对定位 98 7.1.2 托管定位 98 7.1.3 常见的布局管理器 100 7.2 FillLayout(充满式布局) 100 7.2.1 水平填充(默认)和垂直填充 101 7.2.2 设置四周补白 102 7.3 RowLayout(行列式布局) 102 7.3.1 设置折行显示:wrap属性 103 7.3.2 设置空间大小:pack属性 103 7.3.3 设置填充方式:type属性 103 7.3.4 设置是否充满整行:justify属性 104 7.3.5 设置补白和间隔 104 7.3.6 设置控件的大小RowData 105 7.3.7 设置是否等宽或等高:fill属性 105 7.4 GridLayout(网格式布局) 106 7.4.1 设置网格的列数:numColumns属性 106 7.4.2 设置网格等宽:makeColumnsEqualWidth属性 107 7.4.3 设置补白和间隔 107 7.4.4 使用GridData对象 107 7.4.5 设置单元格对齐方式:horizontalAlignment和verticalAlignment属性 108 7.4.6 设置缩进大小:horizontalIndent和verticalIndent属性 109 7.4.7 设置单元格跨行和跨列显示:horizontalSpan和verticalSpan属性 109 7.4.8 设置单元格空间的抢占方式:grabExcessHorizontalSpace和 grabExcessVerticalSpace属性 110 7.4.9 设置的控件大小:minimumWidth和minimumHeight属性 111 7.4.10 设置控件大小:widthHint和heightHint属性 111 7.4.11 样式常量对照表 112 7.5 FormLayout(表格式布局) 112 7.5.1 设置补白和间隔 113 7.5.2 使用FormData对象 113 7.5.3 使用FormAttachment对象 114 7.5.4 设置控件的相对位置 115 7.6 StackLayout(堆栈式布局) 115 7.7 自定义布局管理器 117 7.7.1 布局的基本原理 117 7.7.2 布局计算的常用方法 118 7.7.3 自定义布局类(BorderLayout) 119 7.8 使用VE可视化布局 123 7.8.1 创建可视化的类 123 7.8.2 进行布局设置 124 7.9 本章小结 125 第8章 SWT中的事件模型 126 8.1 事件模型概述 126 8.1.1 监听器(Listener) 126 8.1.2 事件(Event) 127 8.1.3 注册监听器 127 8.1.4 适配器 128 8.1.5 常见的事件 128 8.2 事件处理的常用写法 130 8.2.1 内部匿名类 130 8.2.2 内部类 130 8.2.3 实现接口的类 131 8.2.4 继承的类的方法 132 8.3 键盘事件 132 8.3.1 键盘事件程序示例 132 8.3.2 键盘事件的各种属性 134 8.4 鼠标事件 136 8.4.1 鼠标事件程序示例 136 8.4.2 鼠标事件的各种属性 139 8.5 其他常用的事件 139 8.5.1 选中事件 139 8.5.2 文本修改程序示例 140 8.5.3 文本修改事件:VerifyEvent的各种属性 142 8.5.4 文本修改事件:VerifyEvent和ModifyEvent的区别 143 8.6 无类型的事件 144 8.6.1 注册无类型事件监听器 144 8.6.2 无类型事件程序示例 145 8.7 本章小结 146 第3篇 SWT高级篇 第9章 SWT高级控件 148 9.1 链接文本(Link) 148 9.2 菜单(Menu和MenuItem) 149 9.2.1 菜单与菜单项之间的关系 150 9.2.2 菜单的样式 151 9.2.3 菜单项的样式 152 9.2.4 设置菜单项的图标 152 9.2.5 设置菜单项快捷键 152 9.3 工具栏(ToolBar和ToolItem) 153 9.3.1 工具栏图片资源的管理 155 9.3.2 工具栏的不同样式 157 9.3.3 工具栏按钮的不同样式 158 9.3.4 工具栏常用的方法 160 9.4 可拖动的工具栏(CoolBar和CoolItem) 161 9.4.1 带有下拉选项的工具栏 163 9.4.2 常用的方法 163 9.5 系统托盘(Tray和TrayItem) 164 9.6 滑动组件 167 9.6.1 滑块(Slider) 167 9.6.2 刻度条(Scale) 168 9.6.3 微调按钮(Spinner) 168 9.7 进度条(ProgressBar) 169 9.8 对话框 170 9.8.1 消息提示框(MessageBox) 171 9.8.2 文件目录对话框(DirectoryDialog) 172 9.8.3 文件对话框(FileDialog) 173 9.8.4 颜色对话框(ColorDialog) 175 9.8.5 字体对话框(FontDialog) 176 9.8.6 打印对话框(PrintDialog) 177 9.9 表格(Table、TableItem和TableColumn) 178 9.9.1 Table、TableItem和TableColumn的关系 182 9.9.2 设置带有选择框的表格 182 9.9.3 设置可同时选中多行表格 183 9.9.4 可拖动的表格 184 9.9.5 设置单元格的图标 184 9.9.6 改变选中行高亮显示的颜色 185 9.9.7 带有上下文菜单的表格 186 9.9.8 可编辑的表格(TableEditor) 187 9.9.9 用键盘控制表格(TableCursor) 189 9.9.10 带有进度条的表格 191 9.9.11 表格小结 192 9.10 树(Tree) 192 9.10.1 不同样式的树 193 9.10.2 为树添加图标 193 9.10.3 可编辑的树 196 9.10.4 表格树 197 9.10.5 树小结 198 9.11 格式化文本(StyleText) 198 9.11.1 格式化对象(StyleRange) 199 9.11.2 格式化文本的事件处理 200 9.11.3 对选中文本设置格式 201 9.11.4 自动为数字字符着色 203 9.11.5 换行自动设置背景颜色 204 9.12 浏览器 205 9.13 本章小结 210 第10章 SWT中的拖放支持 211 10.1 可拖放的树 211 10.2 拖放原理概述 214 10.3 拖放源(DragSource) 215 10.3.1 创建拖放源对象 215 10.3.2 定义拖放源数据传输类型 215 10.3.3 处理拖放源事件 216 10.4 拖放目标(DragTarget) 218 10.4.1 定义目标对象 218 10.4.2 定义目标对象的数据传输类型 219 10.4.3 处理拖放目标事件 219 10.5 传输数据(Transfer) 221 10.6 综合示例:简单购物车 222 10.7 对剪贴板的操作 226 10.8 本章小结 229 第11章 SWT线程 230 11.1 线程概述 230 11.1.1 什么是线程 230 11.1.2 创建线程的两种方式 231 11.2 SWT中的UI线程 234 11.3 其他线程访问UI线程 234 11.4 改进的进度条 236 11.5 多线程程序设计 238 11.6 本章小结 243 第12章 SWT系统资源 244 12.1 系统资源概述 244 12.1.1 什么是系统资源 244 12.1.2 释放资源的原则 245 12.1.3 访问资源的原则 246 12.1.4 何时释放资源 246 12.2 颜色(Color) 247 12.2.1 系统颜色 248 12.2.2 RGB颜色 249 12.3 字体(Font) 250 12.4 光标(Cursor) 251 12.5 图像(Image) 252 12.5.1 画布类(Canvas) 252 12.5.2 图像类(Image) 254 12.5.3 图像数据类(ImageData) 255 12.5.4 保存图像类(ImageLoader) 256 12.5.5 Eclipse的图标 256 12.6 SWT绘图 257 12.6.1 使用绘制对象的方法 257 12.6.2 绘制线条 258 12.6.3 绘制字符 259 12.6.4 绘制填充图形 260 12.6.5 绘制图像 261 12.7 本章小结 261 第13章 SWT的高级应用.. 262 13.1 打印支持 262 13.1.1 打印类(Printer)和打印数据类(PrinterData) 262 13.1.2 打印程序示例概述 265 13.1.3 打印程序示例:窗口程序 265 13.1.4 打印程序示例:打开文件程序 268 13.1.5 打印程序示例:设置字体和颜色程序 268 13.1.6 打印程序示例:打印文本的程序 269 13.1.7 打印程序示例:打印文件后的效果预览 273 13.2 使用应用程序 274 13.3 对AWT/Swing程序的支持 275 13.4 OLE和ActiveX控件的支持 275 13.4.1 OLE控件的面板类(OleFrame) 276 13.4.2 OLE控件类(OleClientSite和OleControlSite) 277 13.4.3 OLE 程序示例 278 13.5 Pocket PC应用 280 13.6 Web应用SWT 282 13.7 本章小结 282 第4篇 JFace篇 第14章 JFace概述 284 14.1 配置JFace运行环境 284 14.2 第一个JFace程序 285 14.3 JFace框架概述 287 14.4 JFace的包结构 287 14.5 本章小结 289 第15章 应用程序窗口 290 15.1 JFace的窗口类(Window类) 290 15.2 应用程序窗口ApplicationWindow类 292 15.3 带有菜单栏的程序窗口 293 15.3.1 简单写字板程序示例 293 15.3.2 添加菜单栏的基本步骤 297 15.3.3 创建菜单项 297 15.3.4 菜单项的事件处理 298 15.4 带有工具栏的程序窗口 299 15.5 带有状态栏的程序窗口 300 15.6 其他处理事件的方法 304 15.6.1 “新建”操作 304 15.6.2 “保存”操作 305 15.6.3 “另存为”操作 306 15.6.4 “复制”、“剪切”和“粘贴”操作 307 15.7 本章小结 310 第16章 JFace对话框 311 16.1 JFace对话框概述 311 16.2 信息提示对话框(MessageDialog) 312 16.2.1 创建信息提示对话框 312 16.2.2 错误消息对话框 314 16.2.3 确认消息对话框 315 16.2.4 消息对话框 315 16.2.5 询问对话框 316 16.2.6 警告对话框 316 16.2.7 JFace的本地化 317 16.3 输入对话框(InputDialog) 318 16.3.1 创建输入对话框 319 16.3.2 创建输入文本的验证类 320 16.4 带有提示信息的对话框(TitleAreaDialog) 321 16.5 错误提示对话框(ErrorDialog) 325 16.5.1 创建错误提示对话框 325 16.5.2 使用错误状态对象 327 16.5.3 同时显示多个错误信息 327 16.6 带有进度条的对话框(ProgressMonitorDialog) 329 16.7 自定义对话框 330 16.7.1 自定义对话框程序示例 331 16.7.2 自定义对话框的步骤 333 16.8 本章小结 334 第17章 向导式对话框 335 17.1 向导式对话框概述 335 17.1.1 向导式对话框所涉及的类 335 17.1.2 向导式对话框的常用方法 336 17.2 简单的向导式对话框示例 338 17.2.1 第一个问题向导页面 338 17.2.2 第二个问题向导页面 339 17.2.3 感谢向导页面 340 17.2.4 创建向导 341 17.2.5 创建测试程序 342 17.3 保存对话框状态 344 17.4 复杂的向导式对话框示例 345 17.4.1 自定义向导页面 346 17.4.2 为向导添加帮助 349 17.5 向导式对话框的事件处理 350 17.6 本章小结 350 第18章 首选项 351 18.1 首选项概述 351 18.2 保存首选项的设置 353 18.2.1 首选项值的设置和获取 353 18.2.2 保存首选项所涉及的事件 354 18.3 显示首选项页面 354 18.3.1 创建一个首选项页面 354 18.3.2 创建首选项页面所对应的节点 357 18.3.3 显示首选项对话框 358 18.4 创建树型的导航菜单 360 18.4.1 第一种方法 361 18.4.2 第二种方法 361 18.5 首选项的选项设置 361 18.5.1 字段编辑器概述 362 18.5.2 使用字段编辑器基本步骤 362 18.5.3 布尔型字段编辑器(BooleanFieldEditor) 364 18.5.4 颜色字段编辑器(ColorFieldEditor) 364 18.5.5 字体字段编辑器(FontFieldEditor) 364 18.5.6 路径列表字段编辑器(PathEditor) 365 18.5.7 单选分组字段编辑器(RadioGroupFieldEditor) 365 18.5.8 刻度条字段编辑器(ScaleFieldEditor) 366 18.5.9 整数型字段编辑器(IntegerFieldEditor) 366 18.5.10 选择路径字段编辑器(DirectoryFieldEditor) 366 18.5.11 选择文件字段编辑器(FileFieldEditor) 366 18.6 自定义首选项页面 367 18.7 首选项的事件处理 368 18.8 本章小结 369 第19章 MVC的表格、树和列表 370 19.1 MVC概述 370 19.2 表格(TableViewer) 371 19.2.1 创建表格控制器(Controller) 371 19.2.2 创建表格模型(Model) 373 19.2.3 创建组织表格视图(View) 375 19.2.4 添加和删除数据 376 19.2.5 增加表格排序功能 378 19.2.6 增加表格过滤功能 380 19.2.7 编辑表格单元 381 19.2.8 表格的事件处理 383 19.2.9 带有复选框表格(CheckBoxTableViewer) 383 19.3 树(TreeViewer) 384 19.3.1 树的基本性质 385 19.3.2 创建树(TreeViewer) 386 19.3.3 对树的操作 389 19.4 树和表格的综合示例 390 19.4.1 文件浏览器功能概述 391 19.4.2 程序的整体框架 391 19.4.3 初始化树 393 19.4.4 初始化表格 394 19.4.5 程序的事件处理 396 19.5 列表ListViewer 397 19.6 本章小结 398 第20章 JFace的工具类 399 20.1 JFace资源管理机制 399 20.1.1 图像描述符(ImageDescriptor) 399 20.1.2 图像注册器(ImageRegistry) 401 20.1.3 字体描述符和字体注册器 403 20.1.4 颜色描述符和颜色注册器 404 20.1.5 JFace的资源管理器(JFaceResources) 406 20.1.6 字符转换工具类(StringConverter) 407 20.2 类型检查的工具类 407 20.3 本章小结 408 第21章 文本处理 409 21.1 文本处理概述 409 21.2 项目实战:JavaScript编辑器 409 21.2.1 窗口预览 409 21.2.2 项目文件结构 410 21.3 窗口模块 411 21.3.1 代码实现 411 21.3.2 窗口程序代码分析 414 21.3.3 启动窗口程序 416 21.4 代码着色 417 21.4.1 源代码配置类(SourceViewerConfiguration) 417 21.4.2 基于规则的代码扫描器类(RuleBasedScanner) 419 21.4.3 设置代码扫描规则 420 21.4.4 提取类(Token)和文本属性类(TextAttribute) 423 21.5 内容辅助 423 21.5.1 配置编辑器的内容助手 424 21.5.2 内容辅助类 424 21.5.3 辅助建议类(CompletionProposal) 426 21.6 文档的撤销与重复 427 21.6.1 文档管理器对象(DefaultUndoManager) 427 21.6.2 撤销操作的实现 427 21.6.3 恢复操作的实现 428 21.7 查找与替换窗口 429 21.7.1 窗口的界面设计 429 21.7.2 查找功能的实现 433 21.7.3 替换功能的实现 434 21.8 首选项的对话框 434 21.8.1 首选项页面的代码实现 435 21.8.2 打开首选项页面的代码 436 21.9 文件的打开、保存与打印 437 21.9.1 打开文件 437 21.9.2 保存文件 437 21.9.3 打印文件 438 21.10 帮助对话框 439 21.11 其他的一些工具类 440 21.11.1 事件管理类 440 21.11.2 资源管理类 441 21.11.3 程序中使用的常量 443 21.12 本章小结 444 第5篇 RCP应用篇 第22章 富客户端平台(RCP)应用 446 22.1 RCP概述 446 22.1.1 什么是RCP 446 22.1.2 RCP应用的现状 447 22.2 第一个RCP项目 448 22.2.1 创建插件项目 449 22.2.2 运行RCP程序 450 22.2.3 插件的文件清单 451 22.2.4 MANIFEST.MF文件 452 22.2.5 build.properties文件 454 22.2.6 plugin.xml文件 454 22.3 RCP运行的基本原理 455 22.3.1 插件类MyRCPPlugin 455 22.3.2 应用程序类Application 456 22.3.3 工作台窗口类 458 22.3.4 操作类 459 22.3.5 透视图类 460 22.4 创建扩展的基本方法 460 22.4.1 使用扩展向导创建 460 22.4.2 手工创建 462 22.4.3 获取扩展点的帮助 463 22.5 本章小结 464 第23章 RCP开发 465 23.1 扩展操作集(Action Set) 465 23.1.1 操作集扩展点 465 23.1.2 编写代码创建操作对象 469 23.1.3 编写代码创建操作的步骤 471 23.1.4 其他与操作有关的扩展点 473 23.2 扩展视图 473 23.2.1 视图扩展点 474 23.2.2 视图类 475 23.2.3 视图之间的交互 477 23.2.4 添加视图的工具栏 480 23.2.5 添加上下文菜单 481 23.3 扩展编辑器 484 23.3.1 编辑器扩展点 485 23.3.2 编辑器类 485 23.3.3 打开编辑器 488 23.3.4 添加编辑器的菜单和工具栏 491 23.3.5 多页编辑器 493 23.4 透视图 495 23.4.1 透视图的布局 495 23.4.2 透视图扩展点 498 23.4.3 透视图类 499 23.5 首选项 500 23.5.1 首选项扩展点 500 23.5.2 首选项页面扩展点 501 23.6 帮助文档 503 23.6.1 联机帮助文档扩展点 504 23.6.2 扩展配置 505 23.6.3 联机帮助的目录结构 506 23.6.4 添加动态帮助 507 23.7 RCP产品的发布 508 23.7.1 Eclipse产品配置 508 23.7.2 导出RCP产品 510 23.7.3 运行RCP产品 510 23.8 本章小结 511 第24章 Eclipse表单 512 24.1 Eclipse 表单概述 512 24.1.1 什么是Eclipse 表单 512 24.1.2 Eclipse表单的特性 513 24.1.3 Eclipse表单使用的类包 513 24.2 表单开发基础 513 24.2.1 视图中使用表单 513 24.2.2 多页编辑器中使用表单 515 24.2.3 SWT程序中使用表单 518 24.2.4 获得表单工具对象(FormToolkit)一般方法 519 24.3 表单的各种控件 519 24.3.1 可滚动的表单(ScrolledForm) 519 24.3.2 可折叠的面板(ExpandableComposite) 520 24.3.3 内容区(Section) 523 24.3.4 超链接(Hyperlink) 525 24.3.5 表单文本(FormText) 527 24.4 表单的布局管理器 531 24.4.1 表格布局(TableWrapLayout) 531 24.4.2 列布局(ColumnLayout) 534 24.5 表单的高级应用 536 24.5.1 Master/Details模式 536 24.5.2 实现Master/Detail示例程序 537 24.6 本章小结 544 第25章 项目实战——客户关系管理系统 545 25.1 系统概述 545 25.1.1 系统预览 545 25.1.2 基本概念介绍 546 25.1.3 系统的运行环境 547 25.1.4 系统文件结构的说明 547 25.2 UI界面设计 547 25.3 业务层设计 549 25.3.1 业务层服务的定义 549 25.3.2 业务层的实现 551 25.3.3 业务层服务的管理 552 25.3.4 业务层UML图 553 25.3.5 如何调用业务对象 554 25.4 数据库层设计 555 25.4.1 数据库接口类 556 25.4.2 实现了MySQL 数据库类 556 25.4.3 如何调用数据访问对象 561 25.4.4 应用多种数据库 562 25.4.5 数据库的初始化的脚本 563 25.4.6 表所对应的POJO类 564 25.5 登录模块 566 25.5.1 系统的上下文对象保存登录状态 566 25.5.2 登录验证的实现 567 25.5.3 登录窗口的实现 569 25.6 窗口界面 572 25.6.1 工作台的实现 572 25.6.2 系统托盘的实现 573 25.6.3 菜单栏和工具栏的实现 575 25.6.4 操作管理类(ActionManager) 579 25.6.5 新建客户操作(NewCustomerAction) 580 25.6.6 打开视图操作(ShowViewAction) 581 25.7 各种视图和编辑器的实现 582 25.7.1 快速新建客户视图 583 25.7.2 客户列表视图 585 25.7.3 客户详细编辑器 590 25.7.4 联系人列表视图 595 25.7.5 快速新建联系人视图 597 25.7.6 搜索视图 600 25.7.7 导航视图 603 25.8 新建客户联系人向导 609 25.8.1 新建客户向导 609 25.8.2 新建联系人向导 615 25.9 首选项的实现 618 25.10 plugin.xml文件清单 623 25.11 本章小结... 626
public bz &&定义全局变量bz=.f.this.listview1.view=2 &&设置视图显示方式 *将ImageList控件图片赋予Listview控件 this.listview1.Icons=this.imagelist1.objectthis.listview1.smallicons=this.imagelist1.object&&添加列表项key=‘小区信息生成‘=this.listview1.listitems.add(,,key,,1)key=‘大楼信息生成‘=this.listview1.listitems.add(,,key,,1)key=‘房屋信息生成‘=this.listview1.listitems.add(,,key,,1)key=‘小区信息登记‘=this.listview1.listitems.add(,,key,,1)key=‘大楼信息登记‘=this.listview1.listitems.add(,,key,,1)key=‘房屋信息登记‘=this.listview1.listitems.add(,,key,,1)key=‘系统数据设定‘=this.listview1.listitems.add(,,key,,1)在“经营部”的click事件中添加代码为:this.parent.listview1.listItems.clear &&清除数据this.parent.listview1.view=2 &&设置视图显示方式*将ImageList控件图片赋予Listview控件this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.object*添加数据项key=‘小区信息生成‘=this.parent.listview1.listitems.add(,,key,,1)key=‘大楼信息生成‘=this.parent.listview1.listitems.add(,,key,,1)key=‘房屋信息生成‘=this.parent.listview1.listitems.add(,,key,,1)key=‘小区信息登记‘=this.parent.listview1.listitems.add(,,key,,1)key=‘大楼信息登记‘=this.parent.listview1.listitems.add(,,key,,1)key=‘房屋信息登记‘=this.parent.listview1.listitems.add(,,key,,1)key=‘系统数据设定‘=this.parent.listview1.listitems.add(,,key,,1)在“管理部”的事件中添加以下代码为:this.parent.listview1.listItems.clearthis.parent.listview1.view=2this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.objectkey=‘业信息登记‘=this.parent.listview1.listitems.add(,,key,,2)key=‘人口信息查询‘=this.parent.listview1.listitems.add(,,key,,2)key=‘小区投诉登记‘=this.parent.listview1.listitems.add(,,key,,2)key=‘小区投诉查询‘=this.parent.listview1.listitems.add(,,key,,2)key=‘小区员工管理‘=this.parent.listview1.listitems.add(,,key,,2)key=‘系统数据设定‘=this.parent.listview1.listitems.add(,,key,,2)pjyb=.t.在“工程部”上添加代码为:this.parent.listview1.listItems.clearthis.parent.listview1.view=2this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.objectkey=‘装修队登记‘=this.parent.listview1.listitems.add(,,key,,3)key=‘维修信息登记‘=this.parent.listview1.listitems.add(,,key,,3)key=‘维修信息查询‘=this.parent.listview1.listitems.add(,,key,,3)key=‘装修信息登记‘=this.parent.listview1.listitems.add(,,key,,3)key=‘装修信息查询‘=this.parent.listview1.listitems.add(,,key,,3)pjyb=.t.在“财务部”添加代码为:this.parent.listview1.listItems.clearthis.parent.listview1.view=2this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.objectkey=‘收费登记管理‘=this.parent.listview1.listitems.add(,,key,,4)key=‘水费查询管理‘=this.parent.listview1.listitems.add(,,key,,4)key=‘电费查询管理‘=this.parent.listview1.listitems.add(,,key,,4)key=‘煤气费查询管理‘=this.parent.listview1.listitems.add(,,key,,4)key=‘采暖费查询管理‘=this.parent.listview1.listitems.add(,,key,,4)key=‘其它费用查询管理‘=this.parent.listview1.listitems.add(,,key,,4)pjyb=.t.在“保安部”添加代码为:这this.parent.listview1.listItems.clearthis.parent.listview1.view=2this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.objectkey=‘保安排班管理‘=this.parent.listview1.listitems.add(,,key,,5)key=‘保安排班查询‘=this.parent.listview1.listitems.add(,,key,,5)pjyb=.t.在“经理室”添加代码为:this.parent.listview1.listItems.clearthis.parent.listview1.view=2this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.objectkey=‘小区资源统计‘=this.parent.listview1.listitems.add(,,key,,6)key=‘业信息查询‘=this.parent.listview1.listitems.add(,,key,,6)key=‘人口信息查询‘=this.parent.listview1.listitems.add(,,key,,6)key=‘小区投诉查询‘=this.parent.listview1.listitems.add(,,key,,6)key=‘小区员工查询‘=this.parent.listview1.listitems.add(,,key,,6)key=‘装修信息查询‘=this.parent.listview1.listitems.add(,,key,,6)key=‘维修信息查询‘=this.parent.listview1.listitems.add(,,key,,6)key=‘保安排班查询‘=this.parent.listview1.listitems.add(,,key,,6)pjyb=.t.在“系统管理”中添加代码为:this.parent.listview1.listItems.clearthis.parent.listview1.view=2this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.objectkey=‘操作员管理‘=this.parent.listview1.listitems.add(,,key,,7)key=‘权限设置‘=this.parent.listview1.listitems.add(,,key,,7)pjyb=.t.在“帮助”中添加代码为:this.parent.listview1.listItems.clearthis.parent.listview1.view=2this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.objectkey=‘帮助‘=this.parent.listview1.listitems.add(,,key,,8)key=‘关于本软件‘=this.parent.listview1.listitems.add(,,key,,8)pjyb=.t.在“退出”中添加代码为:quit &&退出程序在Image1的Click事件中添加代码为:this.parent.commdl.filter=‘图片|*.bmp;*.jpg‘ &&设置过滤器this.parent.commdl.showopen &&显示打开对话框this.parent.rq.image2.picture=this.parent.commdl.filename &&显示选定文件的名字3.系统等录界面的设计在项目管理器中添加一个新的表单,名称为Admain在表单中添加一个ImageList 控件,并进行相应的管理员设置。在表单中添加一个Image控件,一个listview控件,一个ImageList控件,两个text控件,三个label控件,一个commandgroup控件。在表单中的init事件中添加代码为:public cn &&定义全局变量cn=0 &&给全局变量赋初值thisform.listview1.view=0 &&设置视图显示方式*将ImageList控件图片赋予Listview控件thisform.listview1.Icons=thisform.imagelist1.objectthisform.listview1.smallicons=thisform.imagelist1.objectselect tabpurview &&选定tabpurview工作区为当前工作区select *;from wuyemanage!tabpurview;where 权限级别=‘1‘;order by tabpurview.操作员姓名;into cursor sysglythisform.text2.value=sysgly.操作员姓名thisform.text1.value=‘‘key=alltrim(sysgly.操作员姓名) &&赋值给变量key=thisform.listview1.listitems.add(,,key,1) &&添加一个列表项select tabpurviewselect *;from wuyemanage!tabpurview;where 权限级别=‘2‘;order by tabpurview.操作员姓名;into cursor gjczydo while !EOF() &&测试当前记录指针是否在文件尾 key=alltrim(gjczy.操作员姓名) =thisform.listview1.listitems.add(,,key,2) &&添加一个列表项 skip &&相对移动记录指针enddoselect tabpurviewselect *;from wuyemanage!tabpurview;where 权限级别=‘3‘;order by tabpurview.操作员姓名;into cursor ybczydo while !EOF() &&测试当前记录指针是否在文件尾 key=alltrim(ybczy.操作员姓名) =thisform.listview1.listitems.add(,,key,3) &&添加一个列表项 skip &&相对移动记录指针enddoselect tabpurviewselect *;from wuyemanage!tabpurview;where 权限级别=‘4‘;order by tabpurview.操作员姓名;into cursor zdydo while !EOF() &&测试当前记录指针是否在文件尾 key=alltrim(zdy.操作员姓名) =thisform.listview1.listitems.add(,,key,4) &&添加一个列表项 skip &&相对移动记录指针enddo在表单的resize事件中添加代码为:purview=val(alltrim(tabpurview.权限级别)) &&根据用户选择设置权限级别pjyb=tabpurview.经营部pglb=tabpurview.管理部pgcb=tabpurview.工程部pcwb=tabpurview.财务部pbab=tabpurview.保安部pjls=tabpurview.经理室psysgl=tabpurview.系统管理manager=alltrim(thisform.text2.value)do form formfdesktop &&调入表单fdesktopthisform.release &&刷新表单在等录的click事件中添加代码为:if empty(操作员姓名) &&判断操作员字段是否为空 thisform.resize &&执行表单的Resize事件 store .t.to pjyb,pglb,pgcb,pcwb,pbab,pjls,psysgl &&给多个内存变量赋予相同的值else seek cname &&查找输入的操作员姓名 set exact on &&设置字符精确比较*判断密码是否正确 if alltrim(tabpurview.密码)!=ppassword cn=cn+1 cmessagetitle=‘系统登录‘ cmessagetext=‘密码错误,请重新输入!‘ ndialogtype=4+32 nanswer=messagebox(cmessagetext,ndialogtype,cmessagetitle) do case case nanswer=6 thisform.text1.value=‘‘ thisform.text1.setfocus &&文本框获得焦点 case nanswer=7 messagebox(‘不要乱来!‘,48,‘系统登录‘) thisform.release &&释放表单 endcase if cn=3 thisform.release endif else thisform.resize &&执行表单的Resize事件 endif endifset exact off &&设置字符非精确比较在取消的click事件中添加代码为:cmessagetitle=‘系统登录‘cmessagetext=‘真的想要退出吗?‘nDialogtype=4+32nanswer=messagebox(cMessagetext,nDialogtype,cMessagetitle)if nanswer=6 quitendif在控件listview1中的itemclick事件中添加代码为:LPARAMETERS itemmanager=alltrim(thisform.listview1.selecteditem.text)thisform.text2.value=managerthisform.text1.setfocus 这样,等录界面就完成了。4.经营部设计(1)在项目管理器中创建一个表单,名称为“小区信息生成”,在表单中添加3个label控件,2个spinner控件,1个commandgroup控件。在“开始生成”的click事件中添加代码为:cstart=thisform.spinner1.valuecend=thisform.spinner2.values=alltrim(str(cstart))e=alltrim(str(cend))cpicture=sys(5)+sys(2003)+‘imagesemptyimage.bmp‘cmessagetitle=‘小区信息生成‘cmessagetext=‘确认生成编号为 ‘+s+‘至 ‘+e+‘的小区信息吗?‘ndialogtype=4+32nAnswer=messagebox(cmessagetext,ndialogtype,cmessagetitle)do case case nAnswer=6 i=1 for i=cstart to cend xqno=alltrim(str(i)) select *; from databasewuyemanage!tabxqinfo; where 小区编号==xqno; into cursor lindep if reccount()=0*追加新记录 insert into tabxqinfo values(xqno,‘‘,‘‘,‘‘,0,0,0,0,0,0,‘‘,‘‘,cpicture,ctod(‘‘),ctod(‘‘)) endif endfor messagebox(‘数据保存成功!‘,48,‘小区信息生成‘) thisform.release do form form小区信息登记 &&调入表单 case nAnswer=7 thisform.spinner1.setfocusendcase在“返回系统”中的click事件中添加代码为:thisform.release &&释放表单(2)在项目管理器中添加一个新的表单名称为“大楼信息生成器”,在表单中添加9个label控件,1个combo控件,2个spinner控件,4个text控件。说明:其编法如(1)(3)在项目管理器中新建一个表单,名称为“房屋信息生成器”,在表单中添加13个label控件,6个combo控件,1个text控件,4个spinner控件,1个commandgroup控件,1个grid控件。说明:其编法如(1)(4)在项目管理器中添加一个新的表单集包含form1,gorm2,名称为“小区信息登记”。在form1表单中添加16个label控件,13个text控件,1个edit控件,2个commandgroup控件,1个common dialog控件,1个image控件,2个command控件,在form2表单中添加1个command控件,1个grid控件。在form1中的load事件中添加代码为:public l &&定义全局变量l=.f.在form1中的activate事件中添加代码为:thisform.text1.value=tabxqinfo.小区编号 &&赋值给Text1thisform.text2.value=tabxqinfo.小区名称thisform.text3.value=tabxqinfo.负责人thisform.text4.value=tabxqinfo.小区说明thisform.text5.value=tabxqinfo.交工日期thisform.text6.value=tabxqinfo.竣工日期thisform.text7.value=tabxqinfo.地址thisform.text8.value=tabxqinfo.占地面积thisform.text9.value=tabxqinfo.建筑面积thisform.text10.value=tabxqinfo.绿化面积thisform.text11.value=tabxqinfo.居住面积thisform.text12.value=tabxqinfo.楼栋数thisform.text13.value=tabxqinfo.总户数thisform.edit1.value=tabxqinfo.备注thisform.container1.image1.picture=tabxqinfo.照片thisform.refresh在form1中的init事件中添加代码为:store l to thisform.text1.enabled,thisform.text2.enabled,thisform.text3.enabled,; thisform.text4.enabled,thisform.text5.enabled,thisform.text6.enabled,; thisform.text7.enabled,thisform.text8.enabled,thisform.text9.enabled,; thisform.text10.enabled,thisform.text11.enabled,thisform.text12.enabled,; thisform.text13.enabled,thisform.edit1.enabled,thisform.badd.enabled,; thisform.bclear.enabled &&设置控件是否有效在form1中的“添加”click事件中添加代码为:if alltrim(thisform.commandgroup1.command1.caption)=‘添 加‘ thisform.commandgroup1.command1.caption=‘保 存‘ &&赋值给Command1的标题文本 thisform.commandgroup1.command2.caption=‘取 消‘ thisform.commandgroup1.command3.enabled=.f. thisform.commandgroup1.command4.enabled=.f.*设置控件有效 l=.t. thisform.init &&执行表单的Init事件 store ‘‘ to thisform.text1.value,thisform.text2.value,thisform.text3.value,; thisform.text4.value,thisform.text7.value store {//} to thisform.text5.value,thisform.text6.value store 0 to thisform.text8.value,thisform.text9.value,thisform.text10.value,; thisform.text11.value,thisform.text12.value,thisform.text13.value thisform.edit1.value=‘‘ thisform.container1.image1.picture=sys(5)+sys(2003)+‘imagesemptyimage.bmp‘ thisform.text1.setfocuselse thisform.commandgroup1.command1.caption=‘添 加‘ &&赋值给Command1的标题文本 thisform.commandgroup1.command2.caption=‘修 改‘ thisform.commandgroup1.command3.enabled=.t. thisform.commandgroup1.command4.enabled=.t.*获取输入信息 xqno=alltrim(thisform.text1.value) xqname=alltrim(thisform.text2.value) xqinfo=alltrim(thisform.text4.value) fzr=alltrim(thisform.text3.value) jiaogdate=thisform.text5.value jungdate=thisform.text6.value area=alltrim(thisform.text7.value) cmemo=alltrim(thisform.edit1.value) zdmj=thisform.text8.value jzmj=thisform.text9.value lhmj=thisform.text10.value juzmj=thisform.text11.value lds=thisform.text12.value zhs=thisform.text13.value cpicture=thisform.container1.image1.picture select *; from wuyemanage!tabxqinfo; where 小区编号==xqno; order by 小区编号; into cursor lindep if reccount()=0 insert into tabxqinfo values(xqno,xqname,xqinfo,fzr,lds,zhs,jzmj,juzmj,zdmj,; lhmj,area,cmemo,cpicture,jungdate,jiaogdate) &&追加新记录 messagebox(‘数据保存完毕!‘,48,‘操作成功!‘) else cmessagetitle=‘小区信息登记‘ cmessagetext=‘信息已修改,确定要保存吗?‘ ndialogtype=4+32 nAnswer=messagebox(cmessagetext,ndialogtype,cmessagetitle) do case case nAnswer=6 update wuyemanage!tabxqinfo set 小区名称=xqname,小区说明=xqinfo,负责人=fzr,; 楼栋数=lds,总户数=zhs,建筑面积=jzmj,居住面积=juzmj,占地面积=zdmj,地址=area,; 备注=cmemo,照片=cpicture,竣工日期=jungdate,交工日期=jiaogdate,绿化面积=lhmj ; where 小区编号==xqno &&更新数据表 messagebox(‘数据保存完毕!‘,48,‘操作成功!‘) endcase endif select tabxqinfo l=.f. thisform.init &&执行表单的Init事件 thisform.activate &&执行表单的Activate事件endif在form1中的“修改”click事件中添加代码为:if alltrim(thisform.commandgroup1.command2.caption)=‘修 改‘ thisform.commandgroup1.command1.caption=‘保 存‘ &&赋值给Command1的标题文本 thisform.commandgroup1.command2.caption=‘取 消‘ thisform.commandgroup1.command3.enabled=.f. thisform.commandgroup1.command4.enabled=.f. l=.t. thisform.init &&执行表单的Init事件 thisform.text1.enabled=.f. thisform.text1.setfocuselse thisform.commandgroup1.command1.caption=‘添 加‘ &&赋值给Command1的标题文本 thisform.commandgroup1.command2.caption=‘修 改‘ thisform.commandgroup1.command3.enabled=.t. thisform.commandgroup1.command4.enabled=.t. thisform.activate &&执行表单的Activate事件 l=.f. thisform.init &&执行表单的Init事件endif在form1中的“删除”click事件中添加代码为:xqnumber=alltrim(thisform.text1.value)cmessagetitle=‘小区信息登记‘cmessagetext=‘确定要删除吗?‘ndialogtype=4+32nAnswer=messagebox(cmessagetext,ndialogtype,cmessagetitle)if nAnswer=6 select tabxqinfo use use database/tabxqinfo exclusive &&以独占方式打开数据表 dele from tabxqinfo where 小区编号=xqnumber &&逻辑删除记录 dele from tabxqinfo where empty(小区编号) pack &&物理删除 thisform.activate &&执行表单的Activate事件 messagebox(‘删除完毕‘,48,‘操作成功!‘) use database abxqinfo thisform.refreshendif在form1中的“浏览”click事件中添加代码为:thisform.parent.form2.grid1.recordsource=‘tabxqinfo‘ &&赋数据源thisform.parent.form2.visible=.t. &&显示表单在form1中的“退出”click事件中添加代码为:thisform.release &&释放表单thisform.parent.form2.release在form1中的“追加图片”click事件中添加代码为:thisform.imagedc.filter="图片|*.bmp;*.jpg" &&设置过滤器 thisform.imagedc.showopen &&显示打开对话框thisform.Container1.image1.picture=thisform.imagedc.filename在form1中的“清除图片”click事件中添加代码为:thisform.Container1.image1.picture=sys(5)+sys(2003)+‘imagesemptyimage.bmp‘在form1中的“第一个”click事件中添加代码为:go top &&记录指针定位到第一条记录this.parent.command1.enabled=.f.this.parent.command2.enabled=.f.this.parent.command3.enabled=.t.this.parent.command4.enabled=.t.thisform.Activate &&执行表单的Activatethisform.refresh在form1中的“上一个”click事件中添加代码为: skip-1 &&把记录指针向上移一条记录 thisform.Activate &&执行表单的Activate if bof() messagebox(‘已是第一个记录‘,48,‘信息窗口‘) this.parent.command1.enabled=.f. this.parent.command2.enabled=.f. thisform.Activate &&执行表单的Activate else this.parent.command1.enabled=.t. this.parent.command2.enabled=.t. endif this.parent.command3.enabled=.t. this.parent.command4.enabled=.t.thisform.refresh在form1中的“下一个”click事件中添加代码为:if eof() messagebox(‘已经是最后一条记录‘,48,‘管理窗口‘) skip-1 &&记录指针向上移动一条记录 thisform.Activate &&执行表单的Activate this.parent.command1.enabled=.f. this.parent.command2.enabled=.f. this.parent.command3.enabled=.f. this.parent.command4.enabled=.f.else skip &&记录指针向下移一条记录 thisform.Activate &&执行表单的Activate if eof() messagebox(‘已经是最后一条记录‘,48,‘管理窗口‘) skip-1 thisform.Activate &&执行表单的Activate this.parent.command3.enabled=.f. this.parent.command4.enabled=.f. else this.parent.command3.enabled=.t. this.parent.command4.enabled=.t. endif this.parent.command1.enabled=.t. this.parent.command2.enabled=.t.endifthisform.refresh在form1中的“最后一个”click事件中添加代码为:go bottom &&记录指针移动到最后一条记录this.parent.command3.enabled=.f.this.parent.command4.enabled=.f.this.parent.command1.enabled=.t.this.parent.command2.enabled=.t.thisform.Activate &&执行表单的Activatethisform.refresh在form1中的控件edit1的keypress事件中添加代码为:LPARAMETERS nKeyCode, nShiftAltCtrlif nKeycode=3thisform.text8.setfocusendif在form1中的控件edit1的lostfocus事件中添加代码为:thisform.text8.setfocus在form2中的“退出小区信息浏览”的click事件中添加代码为:thisform.visible=.f. &&隐藏表单(5)在项目管理器中添加一个表单集包括form1,form2,form3,名称为“大楼信息登记”。在表单form1中添加2个list控件,2个label控件,1个commandgroup控件,在表单form2中添加17个label控件,12个text控件,2个combo控件,1个edit控件,1个common dialog控件,1个image控件,2个command控件,2个commandgroup控件,在表单form3中添加1个grid控件, 1个command控件。说明:其编法如以上(4)所示(6)在项目管理器中新建表单集包含form1,form2,form3,名称为“房屋信息登记”。在表单form1中添加1个commbo控件,2个list控件,2个label控件,1个commandgroup控件,在表单form2中添加19个label控件,9个text控件,8个combo控件,1个edit控件,1个commandgroup控件,在表单form3中添加1个grid控件, 1个command控件。说明:其编法如以上(4)所示(7)在项目管理器中添加一个新的表单名称为“系统数据设定”,在表单中添加一个label控件,2个commandgroup控件。在表单的“退出系统数据设定”按钮的click事件中添加代码为:thisform.release在表单的“房屋朝向设定”按钮的click事件中添加代码为:thisform.release &&释放表单do form form房屋朝向设定 &&调入表单在表单的“权限类型设定”按钮的click事件中添加代码为:thisform.release &&释放表单do form form权属类型设定 &&调入表单在表单的“小区部门设定”按钮的click事件中添加代码为:thisform.release &&释放表单do form form小区部门设定 &&调入表单在表单的“员工种类设定”按钮的click事件中添加代码为:thisform.release &&释放表单do form form员工种类设定 &&调入表单元在表单的“费用科目及费用标准设定”按钮的click事件中添加代码为:thisform.release &&释放表单do form form费用科目及费用标准设定 &&调入表单(8)在项目管理器中添加一个新的表单名称为“房屋朝向设计”,表单中添加3个label控件,1个text控件,1个grid控件,1个commandgroup控件。在表单的init事件中添加以下代码:thisform.text1.controlsource=‘tabfrontage.房屋朝向‘ &&赋数据源thisform.grid1.recordsource=‘tabfrontage‘ &&赋数据源在“添加”按钮的click事件中添加代码为:if thisform.commandgroup1.command1.caption=‘添 加‘ thisform.commandgroup1.command1.caption=‘保 存‘ &&赋值给Command1的标题文本 thisform.commandgroup1.command2.caption=‘取 消‘ &&赋值给Command2的标题文本 append blank &&追加新记录 thisform.text1.value=‘‘ thisform.text1.setfocuselse thisform.commandgroup1.command1.caption=‘添 加‘ &&赋值给Command1的标题文本 thisform.commandgroup1.command2.caption=‘删 除‘ &&赋值给Command2的标题文本endifthisform.refresh &&刷新表单在“删除”按钮的click事件中添加代码为:if thisform.commandgroup1.command2.caption=‘取 消‘ thisform.commandgroup1.command1.caption=‘添 加‘ &&赋值给Command1的标题文本 thisform.commandgroup1.command2.caption=‘删 除‘ &&赋值给Command2的标题文本 cx=alltrim(thisform.text1.value) select tabfrontage &&选择Tabfrontage工作区为当前工作区 use &&关闭数据表 use database/tabfrontage exclusive &&以独占方式打开数据表 dele from tabfrontage where 房屋朝向==cx &&逻辑删除记录 dele from tabfrontage where empty(房屋朝向) &&逻辑删除记录 pack &&物理删除 thisform.text1.value=tabfrontage.房屋朝向 use database abfrontage &&打开数据表 else cx=alltrim(thisform.text1.value) select tabfrontage use use database/tabfrontage exclusive &&以独占方式打开数据表 dele from tabfrontage where 房屋朝向==cx &&逻辑删除记录 dele from tabfrontage where empty(房屋朝向) &&逻辑删除记录 pack &&物理删除 thisform.text1.value=tabfrontage.房屋朝向 messagebox(‘删除完毕‘,48,‘操作成功!‘) use database abfrontage &&打开数据表 endif thisform.init &&执行表单的Init事件在text1的click事件中添加代码为:thisform.text1.controlsource=‘tabfrontage.房屋朝向‘thisform.text1.value=alltrim(thisform.grid1.column1.text1.value)(9)在项目管理器中添加一个新的表单名称为“费用科目及费用标准设定设计”,表单中添加4个label控件,2个text控件,1个grid控件,1个commandgroup控件。说明:其编法如以上(8)所示5.管理部设计(1)在项目管理器中添加一个表单集,含有form1,form2.,form3,form4,名称为“业信息登记”在表单form1中添加1个combo控件,1个list控件,5个label控件,1个commandgroup控件,3个text控件,2个grid控件,1个command控件,1个optioguoup控件。在表单form2中添加1个grid控件, 1个command控件。在表单form3中添加24个label控件,15个text控件,3个combo控件,4个date and time picker控件,1个commandgroup控件,1个grid控件,在表单form4中添加23个label控件,13个text控件,8个combo控件,1个edit控件,1个commandgroup控件。在form1的init事件中添加以下代码:public date1,date2,date3,date4 &&定义全局变量store ctod(‘03/22/2003‘) to date1,date2,date3,date4store .f. to thisform.parent.form3.visible,thisform.parent.form4.visible &&隐藏表单thisform.grid1.columncount=1 &&指定表格的列对象的数目thisform.grid1.column1.header1.caption=‘大楼名称‘store ‘‘ to thisform.grid1.recordsource,thisform.grid1.column1.controlsource,; thisform.list1.controlsource,thisform.list1.rowsource,thisform.grid3.recordsource在form1表单的“小区名称”组合框的interactivechange事件中添加以下代码:thisform.init &&执行表单的Init事件xqname=alltrim(thisform.combo1.displayvalue)select *;from databasewuyemanage!tabdlinfo;where 所属区域==xqname;into cursor lindepingthisform.grid1.columncount=1 &&指定表格的列对象的数目thisform.grid1.column1.header1.caption=‘大楼名称‘thisform.grid1.column1.width=154thisform.grid1.recordsource=‘lindeping‘ &&赋数据源thisform.grid1.column1.controlsource=‘lindeping.大楼名称‘&&赋数据源thisform.refresh 在form1表单的“添加新业”按钮的click事件中添加代码为:yxq=alltrim(thisform.combo1.displayvalue)ydl=alltrim(thisform.text1.value)yfw=alltrim(thisform.text2.value)if empty(yxq) or empty(ydl) or empty(yfw) messagebox(‘请选择小区名称、大楼名称和房屋编号!‘,48,‘操作失败‘)else select tabyzinfo locate for 购入房编号=yfw &&顺序查询 if found() messagebox(‘此房屋已住人!‘,48,‘业信息登记‘) else thisform.parent.form3.visible=.t. &&显示表单 lfjno=len(yxq)+len(ydl)+1 fjno=substr(yfw,lfjno) thisform.parent.form3.text1.value=yxq thisform.parent.form3.text2.value=ydl thisform.parent.form3.text3.value=fjno thisform.parent.form3.text4.value=yfw thisform.parent.form3.text5.value=yfw store ‘‘ to thisform.parent.form3.text6.value,thisform.parent.form3.text7.value,; thisform.parent.form3.text8.value,thisform.parent.form3.text9.value,; thisform.parent.form3.text10.value,thisform.parent.form3.text11.value,; thisform.parent.form3.text12.value,thisform.parent.form3.text13.value,; thisform.parent.form3.text14.value,thisform.parent.form3.combo1.value,; thisform.parent.form3.combo2.value,thisform.parent.form3.combo3.value thisform.parent.form3.grid1.recordsource=‘‘ thisform.parent.form3.text5.setfocus &&Text5获得焦点 endifendif在form1表单的“修改业信息”按钮的click事件中添加代码为:cvalue=alltrim(thisform.text3.value)if !empty(cvalue)thisform.parent.form3.visible=.t.public yzdh &&定义全局变量yzdh=alltrim(thisform.text3.value)select *;from wuyemanage!tabyzinfo;where 业代号==yzdh;into cursor lxgyzinfo*赋值给Text1等thisform.parent.form3.text1.value=lxgyzinfo.小区名称thisform.parent.form3.text2.value=lxgyzinfo.大楼名称thisform.parent.form3.text3.value=lxgyzinfo.房间号码thisform.parent.form3.text4.value=lxgyzinfo.购入房编号thisform.parent.form3.text5.value=lxgyzinfo.业代号thisform.parent.form3.text6.value=lxgyzinfo.业姓名thisform.parent.form3.text7.value=lxgyzinfo.手机thisform.parent.form3.text8.value=lxgyzinfo.管理协议书编号thisform.parent.form3.text9.value=lxgyzinfo.电话thisform.parent.form3.text10.value=lxgyzinfo.购房合同书编号thisform.parent.form3.text11.value=lxgyzinfo.联系地址thisform.parent.form3.text12.value=lxgyzinfo.证件号thisform.parent.form3.text13.value=lxgyzinfo.单位电话thisform.parent.form3.text14.value=lxgyzinfo.工作单位thisform.parent.form3.combo1.value=lxgyzinfo.性别thisform.parent.form3.combo2.value=lxgyzinfo.是否进住thisform.parent.form3.combo3.value=lxgyzinfo.证件名*赋值给date and time picker 控件thisform.parent.form3.date1.year=year(lxgyzinfo.签约日期)thisform.parent.form3.date1.month=month(lxgyzinfo.签约日期)thisform.parent.form3.date1.day=day(lxgyzinfo.签约日期)thisform.parent.form3.date2.year=year(lxgyzinfo.进住起始日期)thisform.parent.form3.date2.month=month(lxgyzinfo.进住起始日期)thisform.parent.form3.date2.day=day(lxgyzinfo.进住起始日期)thisform.parent.form3.date3.year=year(lxgyzinfo.进住日期)thisform.parent.form3.date3.month=month(lxgyzinfo.进住日期)thisform.parent.form3.date3.day=day(lxgyzinfo.进住日期)thisform.parent.form3.date4.year=year(lxgyzinfo.进住截止日期)thisform.parent.form3.date4.month=month(lxgyzinfo.进住截止日期)thisform.parent.form3.date4.day=day(lxgyzinfo.进住截止日期)select *;from wuyemanage!tabrkinfo;where 房间编号==alltrim(thisform.parent.form3.text4.value);order by 人口编号;into cursor lincythisform.parent.form3.grid1.recordsource=‘lincy‘ &&赋数据源thisform.parent.form3.text5.setfocus &&Text5获得焦点else messagebox(‘请选择业代号!‘,48,‘业信息登记‘)endif在form1表单的“删除业信息”按钮的click事件中添加代码为:yzno=alltrim(thisform.text3.value)cmessagetitle=‘业信息登记‘cmessagetext=‘确定要删除吗?‘ndialogtype=4+32nAnswer=messagebox(cmessagetext,ndialogtype,cmessagetitle)if nAnswer=6 select tabyzinfo use use database/tabyzinfo exclusive &&以独占的方式打开数据表 dele from tabyzinfo where 业代号==yzno &&逻辑删除 dele from tabyzinfo where empty(业代号) pack &&物理删除 update wuyemanage!tabfwinfo set 房代号=‘‘,房姓名=‘‘,是否空闲=.t.,房屋状态=‘空闲‘ ; where 房代号==yzno &&更新数据表 messagebox(‘删除完毕‘,48,‘操作成功!‘) use database abyzinfo thisform.optiongroup1.interactivechange &&执行Optiongroup1的Interactionchange事件 thisform.text3.value=‘‘ thisform.refreshendif在form1表单的“退出业登记管理”按钮的click事件中添加代码为:thisform.release &&释放表单thisform.parent.form2.releasethisform.parent.form3.releasethisform.parent.form4.release在form1表单的optiongroup1选项按钮组的interactivechange事件中添加代码为:do case case thisform.optiongroup1.option1.value=1 select *; from wuyemanage!tabyzinfo; where 大楼名称==alltrim(thisform.text1.value); into cursor linall thisform.grid3.recordsource=‘linall‘ &&赋数据源 case thisform.optiongroup1.option2.value=1 select *; from wuyemanage!tabyzinfo; where 是否进住==‘已进住‘ and 大楼名称==alltrim(thisform.text1.value); into cursor liny thisform.grid3.recordsource=‘liny‘ &&赋数据源 case thisform.optiongroup1.option3.value=1 select *; from wuyemanage!tabyzinfo; where 是否进住==‘未进住‘and 大楼名称==alltrim(thisform.text1.value); into cursor linw thisform.grid3.recordsource=‘linw‘endcase在form1的“查看房屋详细信息”按钮的click事件中添加以下代码:dlname=alltrim(thisform.text1.value)if !empty(dlname) select *; from database abfwinfo; where 大楼名称==dlname; into cursor lin if reccount()=0 messagebox(‘请先生成大楼[‘+dlname+‘]的房屋信息!‘,48,‘操作失败‘) else thisform.parent.form2.grid1.recordsource=‘lin‘ &&赋数据源 endifelse thisform.parent.form2.grid1.recordsource=‘tabfwinfo‘endifthisform.parent.form2.visible=.t. &&显示表单在form1的list1控件的click事件中添加以下代码:thisform.text2.value=alltrim(thisform.list1.displayvalue)在form1的text1控件的click事件中添加以下代码:thisform.text3.value=alltrim(thisform.grid3.column1.text1.value)在form2表单的init事件中添加代码:thisform.grid1.recordsource=‘tabfwinfo‘在form2的“退出房屋信息列表”按钮的click事件中添加以下代码:thisform.visible=.f. &&隐藏表单在form3表单的init事件中添加代码:thisform.grid1.recordsource=‘‘在form3表单的load事件中添加代码:public bzcy在form3的“确定保存业信息”按钮的click事件中添加以下代码:*获得输入信息yzdh=alltrim(thisform.text5.value)yzname=alltrim(thisform.text6.value)sex=alltrim(thisform.combo1.displayvalue)lxdz=alltrim(thisform.text11.value)sj=alltrim(thisform.text7.value)tel=alltrim(thisform.text9.value)workdw=alltrim(thisform.text14.value)dwtel=alltrim(thisform.text13.value)zjname=alltrim(thisform.combo3.displayvalue)zjnumber=alltrim(thisform.text12.value)sfjz=alltrim(thisform.combo2.displayvalue)gfhtno=alltrim(thisform.text10.value)glxysno=alltrim(thisform.text8.value)fwno=alltrim(thisform.text4.value)xqname=alltrim(thisform.text1.value)dlname=alltrim(thisform.text2.value)fjno=alltrim(thisform.text3.value)if sfjz=‘已进住‘ fwzt=‘入住‘else fwzt=‘签约‘endif*自动编号select tabrkinfoif empty(人口编号) rknumber=alltrim(‘RK00001‘)else select max(人口编号) from tabrkinfo into array a &&查找表tabrkinfo中最大的人口编号存入数组a中 cend=val(substr(a(1),3))+1 rknumber=alltrim(‘RK‘+padl(alltrim(str(cend,5)),5,‘0‘))endifif empty(yzname) or empty(gfhtno) or empty(glxysno) or empty(zjnumber) or empty(zjname) or empty(tel) messagebox(‘请将信息添全!‘,48,‘操作失败‘)else select tabyzinfo locate for 业代号=yzdh &&顺序查询 if !found() insert into tabyzinfo values(yzdh,yzname,sex,lxdz,sj,tel,workdw,dwtel,zjname,zjnumber,; date1,date3,date2,date4,sfjz,gfhtno,glxysno,fwno,xqname,dlname,fjno) &&追加新记录 update wuyemanage!tabfwinfo set 房代号=yzdh,房姓名=yzname,是否空闲=.f.,; 房屋状态=fwzt where 房间编号==fwno &&更新数据表 insert into tabrkinfo values(rknumber,yzname,sex,ctod(‘‘),‘1‘,‘‘,‘户‘,‘‘,‘‘,‘‘,workdw,‘‘,; ‘‘,‘‘,‘‘,dwtel,sj,tel,lxdz,xqname,dlname,fjno,zjnumber,‘‘,‘‘,fwno,‘‘) messagebox(‘数据保存完毕!‘,48,‘业信息登记‘) thisform.parent.form1.grid1.column1.text1.click &&执行Text1的Click事件 thisform.visible=.f. &&隐藏表单 else update wuyemanage!tabyzinfo set 业姓名=yzname,性别=sex,联系地址=lxdz,手机=sj,电话=tel,; 工作单位=workdw,单位电话=dwtel,证件号=zjnumber,签约日期=date1,进住日期=date3,; 进住起始日期=date2,进住截止日期=date4,是否进住=sfjz,购房合同书编号=gfhtno,; 管理协议书编号=glxysno,购入房编号=fwno,小区名称=xqname,大楼名称=dlname,; 房间号码=fjno where 业代号==yzdh &&更新数据表 update wuyemanage!tabfwinfo set 房代号=yzdh,房姓名=yzname,是否空闲=.f.,; 房屋状态=fwzt where 房间编号==fwno update wuyemanage!tabrkinfo set 姓名=yzname,性别=sex,工作单位=workdw,单位电话=dwtel,; 手机=sj,传呼=tel,家庭住址=lxdz,身份证号=zjnumber where 房间编号==fwno thisform.parent.form1.grid1.column1.text1.click endifendif在form3表单的“添加成员信息”按钮的click事件中添加代码为:pfjno=alltrim(thisform.text3.value)pfjnumber=alltrim(thisform.text4.value)select *;from wuyemanage!tabrkinfo;where 房间编号==pfjnumber;order by 房间编号;into cursor lincyif reccount()=0 messagebox(‘请添加业信息!‘,48,‘业信息登记‘)else thisform.parent.form4.text3.value=alltrim(str(reccount()+1)) thisform.parent.form4.visible=.t. store ‘‘ to thisform.parent.form4.text1.value,thisform.parent.form4.text2.value,; thisform.parent.form4.text4.value,thisform.parent.form4.text5.value,; thisform.parent.form4.text6.value,thisform.parent.form4.text7.value,; thisform.parent.form4.text8.value,thisform.parent.form4.text9.value,; thisform.parent.form4.text10.value,thisform.parent.form4.text11.value,; thisform.parent.form4.text12.value,thisform.parent.form4.combo1.value,; thisform.parent.form4.combo2.value,thisform.parent.form4.combo3.value,; thisform.parent.form4.combo4.value,thisform.parent.form4.combo5.value,; thisform.parent.form4.combo6.value,thisform.parent.form4.combo7.value,; thisform.parent.form4.combo8.value,thisform.parent.form4.edit1.value thisform.parent.form4.text13.value={//} bzcy=.t.endifthisform.parent.form1.commandgroup1.command2.click &&执行Command2的Click事件在form3表单的“编辑成员信息”按钮的click事件中添加代码为:public pxq,pdl,pfjno,pfjnumberpxq=alltrim(thisform.text1.value)pdl=alltrim(thisform.text2.value)pfjno=alltrim(thisform.text3.value) &&定义全局变量pfjnumber=alltrim(thisform.text4.value)cvalue=alltrim(thisform.textg.value)if !empty(cvalue) thisform.parent.form4.visible=.t. cynumber=alltrim(thisform.textg.value) select *; from wuyemanage!tabrkinfo; where 人口编号==cynumber; into cursor lcyinfo thisform.parent.form4.text1.value=lcyinfo.姓名 thisform.parent.form4.text2.value=lcyinfo.职务 thisform.parent.form4.text3.value=lcyinfo.成员代号 thisform.parent.form4.text4.value=lcyinfo.身份证号 thisform.parent.form4.text5.value=lcyinfo.传呼 thisform.parent.form4.text6.value=lcyinfo.单位电话 thisform.parent.form4.text7.value=lcyinfo.家庭电话 thisform.parent.form4.text8.value=lcyinfo.暂住证号 thisform.parent.form4.text9.value=lcyinfo.手机 thisform.parent.form4.text10.value=lcyinfo.家庭住址 thisform.parent.form4.text11.value=lcyinfo.户口所在地 thisform.parent.form4.text12.value=lcyinfo.工作单位 thisform.parent.form4.text13.value=lcyinfo.出生日期 thisform.parent.form4.combo1.value=lcyinfo.性别 thisform.parent.form4.combo2.value=lcyinfo.籍贯 thisform.parent.form4.combo3.value=lcyinfo.婚姻状况 thisform.parent.form4.combo4.value=lcyinfo.职业 thisform.parent.form4.combo5.value=lcyinfo.文化程度 thisform.parent.form4.combo6.value=lcyinfo.职称 thisform.parent.form4.combo7.value=lcyinfo.与户关系 thisform.parent.form4.combo8.value=lcyinfo.国籍 thisform.parent.form4.edit1.value=lcyinfo.备注 thisform.parent.form4.text1.setfocus &&Text1获得焦点 bzcy=.f.else messagebox(‘请选择成员名称!‘,48,‘家庭成员信息‘)endif在form3表单的“删除成员信息”按钮的click事件中添加代码为:rknumber=alltrim(thisform.textg.value)cmessagetitle=‘成员信息‘cmessagetext=‘确定要删除吗?‘ndialogtype=4+32nAnswer=messagebox(cmessagetext,ndialogtype,cmessagetitle)if nAnswer=6 select tabrkinfo use use database/tabrkinfo exclusive &&以独占方式打开数据表 dele from tabrkinfo where 人口编号==rknumber &&逻辑删除记录 dele from tabyzinfo where empty(人口编号) pack &&物理删除 messagebox(‘删除完毕‘,48,‘操作成功!‘) use database abrkinfo thisform.parent.form1.commandgroup1.command2.click &&执行Command2的单击事件 thisform.textg.value=‘‘ thisform.refreshendif在form3表单的“退出业登记”按钮的click事件中添加代码为:thisform.visible=.f. &&隐藏表单在表单form3的 date1控件的init事件中添加代码为:public date1y=alltrim(str(this.year))m=alltrim(str(this.month))d=alltrim(str(this.day))date1=ctod(m+‘/‘+d+‘/‘+y)在表单form3的 date1控件的change事件中添加代码为:*** ActiveX 控件事件 ***y=alltrim(str(this.year))m=alltrim(str(this.month))d=alltrim(str(this.day))date1=ctod(m+‘/‘+d+‘/‘+y)在表单form3的 date2控件的change事件中添加代码为:*** ActiveX 控件事件 ***y=alltrim(str(this.year))m=alltrim(str(this.month))d=alltrim(str(this.day))date2=ctod(m+‘/‘+d+‘/‘+y)在表单form3的 date2控件的init事件中添加代码为:public date2y=alltrim(str(this.year))m=alltrim(str(this.month))d=alltrim(str(this.day))date2=ctod(m+‘/‘+d+‘/‘+y)在表单form3的 date3控件的change事件中添加代码为:y=alltrim(str(this.year))m=alltrim(str(this.month))d=alltrim(str(this.day))date3=ctod(m+‘/‘+d+‘/‘+y)在表单form3的 date3控件的init事件中添加代码为:public date3y=alltrim(str(this.year))m=alltrim(str(this.month))d=alltrim(str(this.day))date3=ctod(m+‘/‘+d+‘/‘+y)在表单form3的 date4控件的change事件中添加代码为:y=alltrim(str(this.year))m=alltrim(str(this.month))d=alltrim(str(this.day))date4=ctod(m+‘/‘+d+‘/‘+y)在表单form3的 date4控件的init事件中添加代码为:y=alltrim(str(thisform.date4.year))m=alltrim(str(thisform.date4.month))d=alltrim(str(thisform.date4.day))date4=ctod(m+‘/‘+d+‘/‘+y)在form4表单的“保存并退出”按钮的click事件中添加代码为:set exact on &&设置字符精确比较*自动编号select tabrkinfoif empty(人口编号) rknumber=alltrim(‘RK00001‘)else select max(人口编号) from tabrkinfo into array a &&查找表中最大的人口编号存入数组 cend=val(substr(a(1),3))+1 rknumber=alltrim(‘RK‘+padl(alltrim(str(cend,5)),5,‘0‘))endif*获得输入信息cname=alltrim(thisform.text1.value)zw=alltrim(thisform.text2.value)cyno=alltrim(thisform.text3.value)sfzno=alltrim(thisform.text4.value)ch=alltrim(thisform.text5.value)dwtel=alltrim(thisform.text6.value)jttel=alltrim(thisform.text7.value)cmemo=alltrim(thisform.edit1.value)zzzno=alltrim(thisform.text8.value)sj=alltrim(thisform.text9.value)area=alltrim(thisform.text10.value)hkszd=alltrim(thisform.text11.value)workdw=alltrim(thisform.text12.value)birthday=thisform.text13.valuesex=alltrim(thisform.combo1.displayvalue)jg=alltrim(thisform.combo2.displayvalue)hyzk=alltrim(thisform.combo3.displayvalue)zy=alltrim(thisform.combo4.displayvalue)whcd=alltrim(thisform.combo5.displayvalue)zc=alltrim(thisform.combo6.displayvalue)yhzgx=alltrim(thisform.combo7.displayvalue)gj=alltrim(thisform.combo8.displayvalue)if empty(cname) or empty(sex) or empty(yhzgx) or empty(area) or empty(hkszd) messagebox(‘请将信息填完整!‘,48,‘操作失败‘)else if bzcy=.t. insert into tabrkinfo values(rknumber,cname,sex,birthday,cyno,whcd,yhzgx,jg,gj,; hyzk,workdw,zy,zw,zc,jttel,dwtel,sj,ch,area,pxq,pdl,pfjno,sfzno,hkszd,zzzno,; pfjnumber,cmemo) &&追加新记录 thisform.parent.form1.commandgroup1.command2.click else cmessagetitle=‘家庭成员信息‘ cmessagetext=‘信息已修改,确定要保存吗?‘ ndialogtype=4+32 nAnswer=messagebox(cmessagetext,ndialogtype,cmessagetitle) do case case nAnswer=6 update wuyemanage!tabrkinfo set 姓名=cname,性别=sex,出生日期=birthday,成员代号=cyno,; 文化程度=whcd,与户关系=yhzgx,籍贯=jg,国籍=gj,婚姻状况=hyzk,工作单位=workdw,职业=zy,; 职务=zw,职称=zc,家庭电话=jttel,单位电话=dwtel,手机=sj,传呼=ch,家庭住址=area,小区名称=pxq,; 大楼名称=pdl,房间号=pfjno,身份证号=sfzno,户口所在地=hkszd,暂住证号=zzzno,房间编号=pfjnumber,; 备注=cmemo where 人口编号==alltrim(thisform.parent.form3.textg.value) &&更新数据表 messagebox(‘数据保存完毕!‘,48,‘操作成功!‘) endcase endif endif thisform.visible=.f. &&隐藏表单在form4表单的“放弃并退出”按钮的click事件中添加代码为:thisform.visible=.f. &&隐藏表单(2) 在项目管理器中新建表单集包含form1,form2,名称为“小区投诉登记”。在表单form1中添加15个label控件,9个text控件,1个edit控件,4个combo控件,2个commandgroup控件,1个command控件。在表单form2中添加1个command控件,1个grid控件。说明:其编法如以上(1)所示6.工程部设计(1)在项目管理器中新建表单集包含form1,form2,名称为“装修信息登记”。在表单form1中添加15个label控件,12个text控件, 2个commandgroup控件。在表单form2中添加1个command控件,1个grid控件。在表单form1的 load事件中添加代码为:public ll=.f.在表单form1的 init事件中添加代码为:thisform.text1.enabled=l &&设置控件是否有效thisform.text2.enabled=lthisform.text3.enabled=lthisform.text4.enabled=lthisform.text5.enabled=lthisform.text6.enabled=lthisform.text7.enabled=lthisform.text8.enabled=lthisform.text9.enabled=lthisform.text10.enabled=lthisform.text11.enabled=lthisform.text12.enabled=lthisform.combo1.enabled=lthisform.edit1.enabled=l在表单form1的 activate事件中添加代码为:thisform.text1.value=tabzxinfo.编号thisform.text2.value=tabzxinfo.申请人thisform.text3.value=tabzxinfo.客户thisform.text4.value=tabzxinfo.预算thisform.text5.value=tabzxinfo.装修押金thisform.text6.value=tabzxinfo.装修管理费thisform.text7.value=tabzxinfo.罚金thisform.text8.value=tabzxinfo.验收thisform.text9.value=tabzxinfo.申请日期thisform.text10.value=tabzxinfo.退押金时间thisform.text11.value=tabzxinfo.完工日期thisform.text12.value=tabzxinfo.经办人thisform.combo1.displayvalue=tabzxinfo.装修队thisform.edit1.value=tabzxinfo.装修内容thisform.refresh &&刷新表单在form1的“添加”按钮的click事件中添加以下代码:if alltrim(thisform.commandgroup1.command1.caption)=‘添加‘ thisform.commandgroup1.command1.caption=‘保存‘ &&赋值给Command1的标题文本 thisform.commandgroup1.command2.caption=‘取消‘ thisform.commandgroup1.command3.enabled=.f. thisform.commandgroup1.command4.enabled=.f. l=.t. thisform.init &&执行表单的Init事件 thisform.text1.enabled=.f.*自动编号 select tabzxinfo if empty(编号) zxno=alltrim(‘ZX00001‘) else select max(编号) from tabzxinfo into array a &&查找表中最大的编号存入数组 cend=val(substr(a(1),3))+1 zxno=alltrim(‘ZX‘+padl(alltrim(str(cend,5)),5,‘0‘)) endif thisform.text1.value=zxno store 0 to thisform.text4.value,thisform.text5.value,; thisform.text7.value,thisform.text6.value store ‘‘ to thisform.text3.value,thisform.text2.value,thisform.text12.value,; thisform.text8.value,thisform.combo1.value,thisform.edit1.value store {//} to thisform.text9.value,thisform.text10.value,thisform.text11.value thisform.combo1.setfocuselse thisform.commandgroup1.command1.caption=‘添加‘ thisform.commandgroup1.command2.capti

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧