Listctrl 显示数据闪屏

h382501630 2009-09-14 09:43:26

在作实验中,用Listctrl来显示从网络接收到的数据,现在网络要发大量的数据过来,然后程序在接收到网络数据后,就把接收到的网络数据按协议分开后,一行一行的加到Listctrl中,现在采用的是虚拟列表的方式来操作Listctrl,所以所有的数据都由程序控制,而我的显示数据是解析数据得到一定的数据帧数或超时后才显示,现在我用的是数据帧大于30帧则显示,超过10ms也显示。然后滚动条要一直到下面显示最后加入的数据。
现在问题就来,数据都可以加入了,且也可以让滚动条显示在最下面,可是会出现闪屏。就是根本看不清现在加入了什么数据,要等到没有数据时,才能看得清数据。后来把帧数据改大和超时也加大后,帧数为50,超时为20ms,效果就会好一点,可是总感觉数据不是连续的显示,显示了,又会停一下,再显示,这样从表面上看就不是在实时的显示数据一样。

那么现在我应该怎么样处理这个问题,让Listctrl显示数据不出现闪屏,且又能比较快的显示,即能实时的显示数据。

我在网上看到用双缓冲,可是只是点到而已,不知道原理怎么样,也不知道行不行。希望能得到高手的解答。
...全文
574 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
p17939845 2009-09-18
  • 打赏
  • 举报
回复
即便是停一下也比你那种闪烁要强阿,你那样做根本没法看,有什么用?
数据太多的话没办法,这样做是最好的效果了。
saiyaman5 2009-09-18
  • 打赏
  • 举报
回复
你的显示频率也太快了,显示出来是给人看的?
显示这么快,人眼跟不上,这还有意义吗?
或者只是为了监视网络数据状况?
muzizongheng 2009-09-18
  • 打赏
  • 举报
回复
buyong SetRedraw。 就是用ShowWindow(SW_HIDE) 和ShowWindow(SW_SHOW)
h382501630 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 barech 的回复:]

有个想法,可以先锁屏,然后显示
[/Quote]

是用SetRedraw吗?

这个在虚拟列表中好像没什么用。
muzizongheng 2009-09-17
  • 打赏
  • 举报
回复
第一, 你在codeproject里搜cgridctrl来替换你的listctrl, 很好很强大,
第二, 你在更新grid里的数据时, hide、show来控制, 不需要setredraw。

应该能实现你的要求, 我的工程就是这样用的, 实时的数据一直来,且滚动条置底, 一点不闪烁。
h382501630 2009-09-17
  • 打赏
  • 举报
回复
再顶上去
怎么无人问津??
barech 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 h382501630 的回复:]
引用 18 楼 muzizongheng 的回复:
第一, 你在codeproject里搜cgridctrl来替换你的listctrl, 很好很强大,
第二, 你在更新grid里的数据时, hide、show来控制, 不需要setredraw。

应该能实现你的要求, 我的工程就是这样用的, 实时的数据一直来,且滚动条置底, 一点不闪烁。

现在只是做实验而已,不是做项目的。

所以还是想问解决Listctrl闪屏的方法或思路。
[/Quote]

有个想法,可以先锁屏,然后显示
h382501630 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 muzizongheng 的回复:]
第一, 你在codeproject里搜cgridctrl来替换你的listctrl, 很好很强大,
第二, 你在更新grid里的数据时, hide、show来控制, 不需要setredraw。

应该能实现你的要求, 我的工程就是这样用的, 实时的数据一直来,且滚动条置底, 一点不闪烁。
[/Quote]
现在只是做实验而已,不是做项目的。

所以还是想问解决Listctrl闪屏的方法或思路。
h382501630 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 p17939845 的回复:]
你设20ms? 请问谁的眼睛跟得上阿?
那样有意义吗?
设1秒刷新已经够快的了
ListCtrl有滚定条,
你也不用担心有些数据看不到

[/Quote]
现在就是这个问题了,如果是1秒刷新,那1秒过后,网络那边已经来了很多的数据
然后再加上把数据包解析出来,再显示时,就会感觉到显示一回后,又停一下,再
显示一回,这样给人的感觉是网络那边不是连续的发数据过来,就不能表现实际的
状态。因为现在把超时设置为100ms且帧数大于50帧就显示,是可以看得出加入的数据,
可就是出现显示一回后,有点停顿后再显示一回。

所以,现在就是想在最坏的情况下,网络那边连续发大量数据过来,程序里不断的接收
数据后,显示到Listctrl里,要能显示不闪屏。

现在从过程来看,发现应该是滚动条在新加入数据时,又跑回前面去影响了。
因为
m_List.EnsureVisible(m_LabelCount-1,FALSE);
m_List.Invalidate();
已经是加入数据完后就显示最后一个加入的数据行,然后新加时,看见滚动条又跑到前面
去,然后加完后又到后面,也就是此时有一个过程,滚动条滚动得太快了,从前面到后面,
每一次加入的数据都这样子,所以屏幕就闪了。

可是这个是不是我那里设置不对,还是它本身在加入数据时就这样子,重画时滚动条都
要跑回前面第一行去。那如果这样,我们是不是解决好让滚动条一直在最后就可以了。
可是让滚动条一直在后面,还不清楚怎么设置!
Qt-UI 2009-09-15
  • 打赏
  • 举报
回复
实在不行重载一个自己的CListCtrl 利用双缓冲重写OnDraw事件 或者环一个性能好点的控件
p17939845 2009-09-15
  • 打赏
  • 举报
回复
你设20ms? 请问谁的眼睛跟得上阿?
那样有意义吗?
设1秒刷新已经够快的了
ListCtrl有滚定条,
你也不用担心有些数据看不到
h382501630 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 p17939845 的回复:]

你的显示还是由数据驱动的,要改成时间驱动。
[/Quote]

用时间驱动,是用定时器定时更新吗?
那定时时短时,像上面用的20ms还会出现闪屏。
如果放得太久,如100ms或更长,那就会出现停顿的现象,好像不是实时显示一样.

或者是我理解错了,能说得更清楚一点吗?
p17939845 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 h382501630 的回复:]
引用 8 楼 yfh1985sdq 的回复:
InsertItem速度太快,即使不闪烁也会看不清,采用5楼的方法,用定时器隔一秒移动下你虚拟数据列的范围,否则频繁更新没意义。

现在就是用虚拟数据列来显示的。

而显示数据是解析数据得到一定的数据帧数或超时后才显示,现在我用的是数据帧大于30帧则显示,超过10ms也显示。然后滚动条要一直到下面显示最后加入的数据。

就是说我显示的是一次可能显示30行,或已经超时了显示现在得到的数据。

[/Quote]
你的显示还是由数据驱动的,要改成时间驱动。
h382501630 2009-09-15
  • 打赏
  • 举报
回复
还是想不出怎么解决!

怎么办?
h382501630 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 scorpio172 的回复:]
实在不行重载一个自己的CListCtrl 利用双缓冲重写OnDraw事件 或者环一个性能好点的控件
[/Quote]

双缓冲来显示,我也在网上看到其它人提到,可是就是提到而已,具体原理是什么也没有说。

而现在在达到一定帧数过后或超时晕后再显示应该是可以实现的。可是为什么还会出现闪屏。

那一位可以把双缓冲实现CListCtrl的虚拟数据列加入数据说得更详细一点。
再此多谢多谢了。
h382501630 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chenyu2202863 的回复:]
virtual list

http://www.codeguru.com/cpp/controls/listview/advanced/article.php/c4151

http://www.codeproject.com/KB/list/virtuallist.aspx
[/Quote]
这个看过了,这个只是介绍virtuallist用法,不知道是不是这样,但是还是出现闪屏的。
chenyu2202863 2009-09-14
  • 打赏
  • 举报
回复
virtual list

http://www.codeguru.com/cpp/controls/listview/advanced/article.php/c4151

http://www.codeproject.com/KB/list/virtuallist.aspx
h382501630 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yfh1985sdq 的回复:]
InsertItem速度太快,即使不闪烁也会看不清,采用5楼的方法,用定时器隔一秒移动下你虚拟数据列的范围,否则频繁更新没意义。
[/Quote]
现在就是用虚拟数据列来显示的。

而显示数据是解析数据得到一定的数据帧数或超时后才显示,现在我用的是数据帧大于30帧则显示,超过10ms也显示。然后滚动条要一直到下面显示最后加入的数据。

就是说我显示的是一次可能显示30行,或已经超时了显示现在得到的数据。
奉海 2009-09-14
  • 打赏
  • 举报
回复
InsertItem速度太快,即使不闪烁也会看不清,采用5楼的方法,用定时器隔一秒移动下你虚拟数据列的范围,否则频繁更新没意义。
h382501630 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 p17939845 的回复:]
不要来一行就插一行,做一个缓冲区,把接到的数据放里面
然后做一个Timer,每秒钟刷新一次,每次把新来的数据插进去,然后把插入的数据从缓冲区删掉
[/Quote]
现在不是一行一行的插入,是一行一行的加入缓冲里,然后到一定的数据帧后,或已经到时间了才
显示出来的。
因为现在用的是virtuallist
加载更多回复(4)
前言 第1章 消息框和对话框 1.如何在窗口程序中创建消息框 2.如何使用资源字符串设置消息框内容 3.如何在消息框中动态显示资源字符串 4.如何设置消息提示框的标题文字 5.如何使消息提示框的标题右对齐 6.如何在消息提示框中绘制表格 7.如何在消息提示框中设置图标 8.如何在消息提示框中显示问号图标 9.如何在消息提示框中设置按钮 10.如何在消息提示框中显示“是”、“否”按钮 11.如何在消息提示框中显示“重试”、“取消”按钮 12.如何设置消息提示框的默认选择按钮 13.如何确定用户在消息框中选择的按钮 14.如何设置“文件”对话框的标题文字 15.如何设置“文件”对话框的过滤器 16.如何设置“文件”对话框的初始目录 17.如何设置“文件”对话框的初始文件名 18.如何使“文件”对话框自动添加扩展名 19.如何实现“文件”对话框的多重选择功能 20.如何在“文件”对话框中选择多个文件 21.如何从“文件”对话框中获取文件标题名 22.如何从“文件”对话框中获取文件扩展名 23.如何在“文件”对话框中预览位图文件 24.如何创建一个文件“保存”对话框 25.如何在程序启动时弹出“文件”对话框 26.如何从“文件夹”对话框中选择文件夹 27.如何在“文件夹”对话框中新建文件夹 28.如何使用“颜色”对话框设置颜色 29.如何在“颜色”对话框中显示帮助按钮 30.如何禁止显示“颜色”对话框的自定义颜色 31.如何禁止“颜色”对话框的自定义颜色按钮 32.如何使用“字体”对话框设置字体和颜色 33.如何使用“查找与替换”对话框 34.如何显示操作系统默认的“关于”对话框 第2章 常用控件和组件 35.如何设置按钮控件的标签文本 36.如何设置按钮控件的显示字体 37.如何动态禁用和启用按钮控件 38.如何动态隐藏和显示按钮控件 39.如何在按钮控件上动态加载图标 40.如何在按钮控件上动态加载位图 4 1.如f可制作图标和文本共存的按钮 42.如何制作不规则的多边形按钮 43.如何制作GIF动画效果的按钮 44.如何制作AVI视频效果的按钮 45.如何在程序中动态创建按钮控件 46.如何在视图窗口中创建按钮控件 47.如何获取鼠标指向的按钮控件标题 48.如何创建文本和颜色共存的ComboBox 49.如何创建自动完成列表项的ComboBox 50.如何使ComboBox控件自动适应列表项 5l.如何使ComboBox控件自动装入文件名列表 52.如何在编辑框中限制输入的字符类型 53.如何为编辑框添加自动完成匹配功能 54.如何设置编辑框的背景颜色和文本颜色 55.如何使编辑框的宽度自动适应窗体大小 56.如何获取在编辑框中选择的文本内容 57.如何获取在编辑框中显示的文本行数 58.如何重置编辑框默认的右键菜单 59.如何显示载有RichEdit控件的对话框 60.如何在RichEdit中实现查找和定位字符 61.如何在RichEdit中混合显示图片和文本 62.如何使List列表控件支持整行选择 63.如何使用List列表控件填充表格数据 64.如何使用数据库记录填充List列表控件 65.如何创建单元格可编辑的List列表控件 66.如何在ListBox中查找指定的字符串 67.如何为超长的ListBox列表项添加提示 68.如何将ListBox转换成CheckListBox 69.如何在视图窗口中绘制ListBox控件 70.如何使用Progress控件显示完成进度 71.如何使用Scroll控件控制滚动范围值 72.如何使用Slider控件控制滑动刻度值 73.如何使用Tab标签页(选项卡)控件 74.如何使用Tree控件显示目录树形结构 75.如何为树控件的子节点添加复选功能 76.如何为控件添加浮动提示窗口功能 77.如何使用回车键切换窗体控件焦点 78.如何遍历应用程序窗体中的各个控件 79.如何使窗体中的控件跟随鼠标移动而移动 80.如何设置静态文本控件的背景和文本颜色 81.如何通过控件实现鼠标拖动文本效果 第3章 标题栏和菜单栏 82.如何获取程序窗口标题栏的高度 83.如何获取程序窗口标题栏的按钮尺寸 84.如何获取程序窗口标题栏的文字 85.如何获取程序窗口标题栏的文字颜色 86.如何设置程序窗口标题栏的文字颜色 87.如何在窗口标题栏中滚动显示文字 88.如何在对话框程序中设置标题栏文字 89.如何在单文档程序中设置标题栏文字 90.如何禁止在窗口标题栏上显示文档名 91.如何自定义单文档程序窗口的标题栏 92.如何取消单文档程序标题栏的右键菜单 93.如何隐藏或显示应用程序的标题栏 94.如何获取IE浏览器窗口的标题栏文字 95.如何修改IE浏览器的标题栏内容 96.如何禁止标题栏响应鼠标双击事件 97.如何在标题栏右键菜单中新增菜单项 98.如何禁止单文档程序的关闭按钮 99.如何禁止单文档程序的最大化按钮 100.如何禁止单文档程序的最小化按钮 101.如何获取顶层菜单所占的行数 102.如何获取单文档程序菜单栏的高度 103.如何获取菜单项的标题文本内容 104.如何以渐变色绘制选择的菜单项 105.如何在组菜单项的左侧绘制纵向标题 106.如何在菜单项中同时显示图标和文本 107.如何在单文档程序主菜单中删除菜单 108.如何在单文档程序主菜单中增加菜单 109.如何启用和禁用主菜单组中的子菜单 110.如何删除单文档程序的主菜单 111.如何根据数据库记录动态创建菜单 112.如何取消无消息响应菜单的状态限制 113.如何显示或隐藏菜单项的复选标记 114.如何创建单选按钮效果的菜单组 115.如何在“最近的文件”子菜单中显示记录 116.如何在视图窗口中创建弹出式跟踪菜单 117.如何在视图窗口中创建上下文快捷菜单 118.如何禁止运行默认系统菜单按钮命令 119.如何设置默认系统菜单的字体为粗体 120.如何为默认系统菜单文字添加下划线 121.如何增加对话框应用程序的系统菜单项 122.如何删除对话框程序的系统菜单项 l23.如何在对话框应用程序中加载菜单 124.如何为不同控件添加不同的右键菜单 125.如何在操作系统任务栏上添加托盘菜单 126.如何触发操作系统的“开始”菜单 127.如何隐藏IE浏览器的右键菜单组 第4章 工具栏和状态栏 128.如何获取工具栏中的图标资源 129.如何在工具栏上设置背景图像 130.如何在工具栏上加载动画窗口 131.如何在工具栏上加载组合框控件 132.如何在工具栏上加载孚体组合框 133.如何为工具栏添加动态真彩按钮 134.如何为工具栏按钮设置下拉箭头 135.如何为工具栏按钮添加下压效果 136.如何在工具栏上显示图标和文字 137.如何设置工具栏按钮的标题文字 138.如何设置工具栏按钮的提示信息 139.如何为对话框工具栏按钮添加提示 140.如何隐藏工具栏按钮的提示信息 141.如何在工具栏上增加删除按钮 142.如何动态隐藏或显示工具栏按钮 143.如何动态启用或禁用工具栏按钮 144.如何动态改变工具栏按钮的位置 145.如何对工具栏中的按钮进行分组 146.如何在对话框程序中加载工具栏 147.如何隐藏或显示应用程序的工具栏 148.如何在程序主窗口中停靠工具栏 149.如何使用对话栏实现工具栏效果 150.如何在IE浏览器工具栏上添加按钮 l51.如何使用代码设置工具栏图标 152.如何使用代码获取工具栏指针 153.如何使用代码获取状态栏指针 154.如何隐藏或显示应用程序的状态栏 155.如何在状态栏中增加新的窗格 156.如何更新状态栏窗格中的显示内容 157.如何同步状态栏与对话框窗体的改变 158.如何在状态栏窗格中显示当前时间 159.如何在状态栏窗格中显示鼠标位置 160.如何在状态栏窗格中滚动显示文本 161.如何在状态栏窗格中加载进度条 162.如何在状态栏窗格中加载图像 163.如何在状态栏窗格中播放视频动画 第5章 光标和图标的应用 164.如何获取系统默认的光标大小 165.如何装入操作系统预置的光标 166.如何设置当前程序显示的光标 167.如何创建沙漏效果的等待光标 168.如何使用十字光标定位画线坐标 169.如何使用动画文件设置程序光标 170.如何捕捉光标指向的热区范围 171.如何将光标限制在指定范围内 172.如何获取光标当前的活动范围 173.如何获取系统默认的图标大小 174.如何获取可执行文件中的图标 175.如何提取动态链接库中的图标 176.如何提取图标文件中的图标 177.如何以发送消息方式设置图标 178.如何使程序标题栏中的图标旋转 179.如何在操作系统托盘中设置图标 第6章 程序主窗口界面 180.如何创建一个向导式的对话框窗体 181.如何创建一个属性页的对话框窗体 182.如何创建列表视图类型的程序窗体 183.如何创建不规则的对话框窗体 184.如何创建圆角状的非矩形窗体 185.如何使用文字线条填充窗体轮廓 186.如何根据图片的形状创建程序窗体 187.如何在窗体中创建切分多视图窗口 188.如何在窗体中创建切分同视图窗口 189.如何判断程序窗体是否为切分窗体 190.如何设置单文档程序窗体的背景颜色 191.如何在对话框窗体中创建渐变色背景 192.如何随机更换对话框窗体的背景图像 193.如何设置HTML对话框窗体的背景图像 l94.如何获取默认的程序窗体边界宽度 195.如何获取窗体水平滚动条箭头宽度 196.如何获取窗体垂直滚动条箭头宽度 197.如何设置多文档程序的主窗口标题 198.如何设置多文档程序的子窗口标题 199.如何设置多文档程序的主窗口图标 200.如何设置多文档程序的子窗口图标 201.如何限制多文档程序子窗口的大小 202.如何禁止用户拖动标题栏移动窗体 203.如何闪烁应用程序窗体的标题栏 204.如何定制窗体的边框线和标题栏 205.如何拖动没有标题栏的程序窗体. 206.如何拖动非标题栏区域移动窗体 207.如何拖动对话框主窗体移动程序 208.如何动态隐藏或显示应用程序窗体 209.如何动态移动和改变程序窗体的位置 210.如何动态改变应用程序窗口的大小 211.如何限制改变应用程序窗口的大小 212.如何限制应用程序窗口的缩放范围 213.如何固定单文档程序窗体的大小 214.如何使用网页作为程序的主窗体 215.如何发送消息最大化显示程序窗口 216.如何发送消息最小化隐藏程序窗口 217.如何发送消息还原(恢复)程序窗口 218.如何使MDI程序子窗口最大化启动 219.如何使SDI程序窗口最大化启动 220.如何使SDI程序窗口最小化启动 221.如何以不同方式居中显示程序窗口 222.如何使单文档程序窗口最顶层显示 223.如何实现全屏显示应用程序窗口 224.如何使程序窗口以任意透明度显示 225.如何透明显示程序窗口的部分区域 226.如何将程序的窗口缩放到托盘显示 227.如何获取在任务栏显示的窗口程序 228.如何将其他窗口程序调至前台显示 229.如何以淡入的效果显示程序窗口 230.如何以淡出的效果隐藏程序窗口 231.如何以扩展的效果显示程序窗口 232.如何以动画收缩效果隐藏程序窗口 233.如何以扩展收缩效果展开程序窗口 234.如何以异步方式控制显示程序窗口 235.如何设置对话框程序窗口的启动位置 236.如何在上次关闭位置启动程序窗体 237.如何显示和关闭非模式对话框 238.如何在对话框程序中加入闪屏效果 239.如何在单文档程序中加入闪屏效果 240.如何使程序窗口自动适应图像尺寸 241.如何使用桌面区域填充程序窗口 242.如何在程序视图窗口中添加插入符 243.如何实现QQ抽屉导航效果的界面 244.如何使用树形视图导航程序界面 第7章 程序管理和控制 245.如何捕获按下的Home等功能键 246.如何捕获按下的Air或Shift+Alt组合键 247.如何捕获按下的Ctrl或Clrl+Alt组合键 248.如何捕获按下的Ctrl或Ctrl+Shift组合键 249.如何捕获用户按下键盘的任一按键 250.如何使用钩子技术监视键盘的按键操作 251.如何使用小键盘数字键模拟鼠标单击 252.如何禁止使用Esc键关闭对话框程序 253.如何禁止使用Air+F4组合键关闭程序 254.如何使用回车键切换编辑框的输入焦点 255.如何为应用程序自定义加速键 256.如何创建热键及其消息处理函数 257.如何判断是否同时按下了鼠标键和Ctrl键 258.如何判断鼠标按键是否单击了标题栏 259.如何跟踪显示鼠标移动的当前位置 260.如何在桌面上创建应用程序快捷方式 261.如何查询快捷方式所属的源程序名称 262.如何禁止在任务栏显示单文档程序标题 263.如何禁止多文档程序启动时创建新文档 264.如何直接以发送消息方式关闭程序 265.如何重定向菜单消息命令到对话框 266.如何添加命令响应范围消息处理函数 267.如何在应用程序中创建自定义消息 268.如何在应用程序中寄送自定义消息 269.如何使用定时器响应间隔发生的操作 270.如何使用互斥量禁止运行多个实例 271.如何使用映射文件禁止运行多个实例 272.如何在应用程序中执行其他应用程序 273.如何查找当前系统停止响应的程序 274.如何判断指定窗口程序是否已经运行 275.如何使单文档程序启动时显示对话框 276.如何在程序运行时禁止关闭计算机 277.如何在关闭单文档程序时给予提示 278.如何处理Windows程序的命令行参数 279.如何在应用程序中运行命令行命令 280.如何获取执行程序的版权声明信息 281.如何创建最简单的MFC应用程序 282.如何使:MFC程序架构支持一档多视 283.如何在MFC:程序中浏览PDF格式文件 第8章 打印机和打印实现 第9章 进程和线程管理 第10章 文件读写操作 第11章 文件和文件夹管理 第12章 字符串和数据转换 第13章 操作系统维护 第14章 计算机设备管理 第15章 文字和图像显示 第16章 音频和视频 第17章 网络通信 第18章 数据库管理 第19章 数据库访问 第20章 数据库查询 第21章 Word和Excel应用 第22章 WMI查询和管理 第23章 注册表综合应用

16,551

社区成员

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

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

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