重温MFC.

MFC中CTabSheet继承CTabCtrl的方法 <br />思路:当我们调用InsertItem()这个函数的时候,选项卡控件将会添加一个标签页,这个时候,我们将自己的对话框的窗体的指针与此标签页关联起来,当用户进行标签页的切换的时候,我们根据当前是哪个标签页,显示哪个对话框,不是与当前标签页关联的对话框,我们将其隐藏即可.这样我们便可以实现选项卡控件.<br /> <br /> <br /> <br /> 第一步:新建一个自己的类CTabSheet继承CTabCtrl.<br />  第二步:定义有用的成员变量<br />  CDialog* m_dl 阅读详情

    使用MFC已经足足有五年的时间了, 时间不短了, 应该算是一个老手了,但是每每提及MFC的时候, 虽然都会得到别人的一些小小的恭维,但其实自己都不是那么的胸有成竹, 总是有一丝丝的恐惧, 因为我知道,在这里,我有一些软胁. 有一些不把自由把握的东西. 对于一个自己不能完全把握的事情, 理所当然的就没有信心. 我属于比较上进的一类人, 一直以来都会很努力的学习, 但是因为项目经验太少, 太多的知识都是来自书本, 没有经过实践锻炼的知识都是不牢固的知识, 过阵子都忘了.  原来看到过一些前辈说编程一定要多动手,多实践, 但我一直没把这个当回事,甚至于觉得动手写简直都是浪费时间, 现在终于有些明白了, 不自己写一遍, 记忆不深刻, 不管当时理解的多么的透彻, 过后都会和没看过一模一样.所以以后要多多动手.

    进步就是不断的克服自己的缺点, 弥补自己的弱项. 在MFC中,我的弱项,让我恐惧的让我没信心的是什么? 这个十一长假的首要任务就是找出它们,解决掉它们.

 

1 单文档和多文档工程.

   一直以来都是做的工程都是对话框架工程.从来没有做过一个单文档或多文档的工程. 其实不懂单文档就是不懂doc/frame/view结构, 这个是MFC的灵魂.

   一直以来总是觉得view是个特别抽象的东西, 没有办法从根本上去理解它. 但是有的时候,如果你不能理解的话, 最起码要记住. 当你以后用的多了,时间长了,慢慢就会理解了.

   其实view和frame一样,都是继承自cwnd, 都是一种窗口,只是这个名字起的容易让人误解.    就好像不同职业的人有不同的名字一样, 比如一类人叫工程师, 一类人叫驾驶员, 都是人, 但是根据分工不同起了不同名字. frame view 都是wnd, 只是因为结构和分工不同, 所以给它们起了一个不同的名字.

   单文档程序, 包含这样几个类, class CMainFrame : public CFrameWnd, CMainFrame, 主窗口. 负责管理工具栏, 状态栏等. 它内嵌一个class CHgView : public CScrollView,它负责显示及接受用户输入. class CHgDoc : public CDocument负责文档读写.

   多文档程序,包含class CMainFrame : public CMDIFrameWnd, class CChildFrame : public CMDIChildWnd, class CScribbleView : public CView, class CScribbleDoc : public CDocument.

   要记住这几个类, CWnd, CFrameWnd, CMDIFrameWnd, CMDIChildWnd. 它们都是MFC标准类.

   根据名字可以知道, CFrameWnd 是一种专门做为frame的wnd, 所以单文档程序的外框是对应的类就是CFrameWnd.

   CMDIFrameWnd 是多文档程序的主框架对应的类. CMDIChildWnd是子框架对应的类.

   frame和button一样理解就好多了.要生成一个按钮, 需要生成一个CButton类的对象.要生成一个程序的外框,需要生成一个CFrameWnd对象.

  

BOOL CScribbleApp::InitInstance()

{

     // create main MDI Frame window
    CMainFrame* pMainFrame = new CMainFrame;
    if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
     return FALSE;
    m_pMainWnd = pMainFrame;

 

    // The main window has been initialized, so show and update it.
    pMainFrame->ShowWindow(m_nCmdShow);
    pMainFrame->UpdateWindow();

}

 

为什么这么简单的事情五年了才真正的理解? 因为从来没有认真的考虑过.

  

  

 

2 serialize()函数文件读写.

3 滚动窗口, 拆分窗口

4 工具栏. 

 

第五章: 浅出MFC 程序设计.

1 AFXRES.H.

   mfc程序的RC文件必须载入此文件. MFC对于标准资源(例如File, Edit等菜单项目)的ID都有默认值.定义于此文件中, 例如:

   #define ID_FILE_NEW 0XE100

 

2 多文档. 分割窗口,滚动条. 标准动作的再处理.

3 如果在AppWizard 中没有选择支持Activex, 后来就不能使用Activex了吗?

4 为什么感到迷惑?因为你从来都不曾动手去做. 只是看啊看...而且不求甚解.不仔细,不认真,稀里糊涂的的看.

   看到CFrameWnd   CMainFrame CView CMDIFrameWnd CMDIChildWnd 这些东西就害怕. 因为你没有真正去搞清楚它们每一个空间是啥? 一些是MFC标准类,一些是你从标准类中继承下来的, just remember them!!

 

5  

CMultiDocTemplate* pDocTemplate;
 pDocTemplate = new CMultiDocTemplate(
  IDR_SCRIBTYPE,
  RUNTIME_CLASS(CScribbleDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(CScribbleView));
 AddDocTemplate(pDocTemplate);

 

这段代码的作用是绑定! 你的CScriibleView 中有一个这样的函数:

inline CScribbleDoc* CScribbleView::GetDocument()
   { return (CScribbleDoc*)m_pDocument; }

 

假如你的工程中有十个view类, 十个doc类. 在程序起来后会有十个view对象, 十个doc对象. 那么当你调用CScribbleView的GetDocument()时, 程序怎么知道把哪个doc对象给你? 答案就是通过绑定!

 

6 工具栏

 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
 {
  TRACE0("Failed to create toolbar/n");
  return -1;      // fail to create
 }

 

我们在MainFrame里创建一个工具栏(CreateEx), 然后载入一个指定的工具栏图标(LoadToolBar函数指定IDR_MAINFRAME).

实际上一个ToolBar是一个bmp图片. 存放在工程中的res文件夹中. 在vc的资源编辑器中这个bmp会分成为很多个小图标.可以一个个编辑.

 

这些分开的小图标有自己的ID吗.?它们是怎么知道我点击的哪个?

在rc中有描述.

我随便载入一个BMP可以吗?

在工具栏上增加一项,如何为它添加行为?

在.rc文件中会有这样的描述:

IDR_MAINFRAME           BITMAP  MOVEABLE PURE   "res//Toolbar.bmp"

/////////////////////////////////////////////////////////////////////////////
//
// Toolbar
//

IDR_MAINFRAME TOOLBAR DISCARDABLE  16, 15
BEGIN
    BUTTON      ID_FILE_NEW
    BUTTON      ID_FILE_OPEN
    BUTTON      ID_FILE_SAVE
    SEPARATOR
    BUTTON      ID_EDIT_CUT
    BUTTON      ID_EDIT_COPY
    BUTTON      ID_EDIT_PASTE
    SEPARATOR
    BUTTON      ID_FILE_PRINT
    SEPARATOR
    BUTTON      ID_APP_ABOUT
    BUTTON      ID_BUTTON32771
END

其中IDR_MAINFRAME是toolbar的ID.

我们在CScribbleApp中增加一个对于ID_BUTTON32771的处理函数即可.

 

 

怎么操作图像中的每个小图像?

loadbitmap?

 

 

文档读写?

 

消息路径, frame/view

 

单文档和多文档的区别:

单文档有一个Frame类  class CMainFrame : public CFrameWnd

多文档有两个Frame类  主Frame :  class CMainFrame : public CMDIFrameWnd

                                 子Frame:   class CChildFrame : public CMDIChildWnd

CMDIFrameWnd和CMDIChildWnd 都是标准MFC类, 且它们都继承自CFrameWnd.

 

 

view中可以在ondraw中画图,在别的函数中行不行? 可以创建控件? frame中也可以画图?

view, frame, dialog在本质上有何不同?在行为上有何不同?dialog能做的事view frame都可以做吗?

view frame dialog都是从cwnd继承而来的, 只要是cwnd,就可以画图, 所以view frame dialog都可以画图.

方法是使用DC. view的ondraw函数在frame 的onpaint之前执行.

 

有一个问题是如果在frame中的onpaint()中画条线, 但是如果前面没有afxmessagebox(), 那么这条线将不能显示????

 

当然也都可以摆放控件.只是在view frame里我们要动态创建, 不能像dialog那样拖控件上去.

如果想拖拉控件,可以使用CFormView, 这个结合了dialog和view的双重功能!

只是我们既然有了view ,我们就不再在frame上画图了,而是在view上画图.

 

状态栏上的文字?

 

滚动条:

为什么要滚动?

一个view窗口有尺寸, 比如说是300像素 * 500像素. 当你将一幅图像载入到该view中时,这幅图是一个点一个点的画出来的,

代码是这样的:

 for(int i=1; i < m_pointArray.GetSize(); i++)
 {
  pDC->LineTo(m_pointArray[i]);
 } 

 

假如一个点占一个像素的话, 如果横向点数超过了300个,那么超出的部分我们就看不到了。这时候我们可以将view窗口拉大,这时候就可以多看到一部分了。但是如果view拉到了和屏幕一样大(比如800*900),但是实际图像超过800*900个点,那我们就没办法看到整个图像了。

 

为了解决这个问题,滚动条出现了,即出现了一个cscrollview. 它靠什么解决问题? 要知道它不能将你的显示器变大,它的解决方法是每次只看该图像的一部分,这样你就可以通过这种方法来了解整个图像了。这时候view上有一个横向的按钮和一个竖向的按钮。假设这个view的大小是80*90, 你的显示器是800*900,图像是8000*9000, 这个view在一开始的时候显示的是图像的百分之一,点一下按钮,view去显示图像的下一个百分之一。点到一百下以后,图像就为空了,但是这时候我们可以一直点下去。。。这样似乎不太好,我们不知道什么时候图像已经显示完了,所以我们应该把scrollview设计为大小可控的,当我们设定了该view最大可以体现的像素数后,根据现在view的大小,我们可以计算出滚动条大小,点一次按钮滚动多少都可以计算出来。

即: SetScrollSizes(MM_TEXT, CSize(800,900));

如果图像中保存着自己的大小的话,那么我们在显示图像的程序中动态设定scrollview的大小的话,那不就完美了吗。。

即:SetScrollSizes(MM_TEXT, GetDocument()->GetDocSize());

至此我们可以精确的用scrollview来显示一幅任意大的图像。一切搞定。

 

 滚动条的 具体编程方法:

  1 让你的view类继承自CScrollView,

      class CHgView : public CScrollView

  2 在view类中实现一个方法:

     void CHgView::OnInitialUpdate()
      {
      CScrollView::OnInitialUpdate();
 
       // TODO: Add your specialized code here and/or call the base class
       SetScrollSizes(MM_TEXT, CSize(800,900));
     }

 

分割窗口的编程方法:

如果是单文档程序,则在CMainFrame类中增加一个成员变量CSplitterWnd m_splitwnd; 在类中实现这样一个函数

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
 // TODO: Add your specialized code here and/or call the base class
 return m_splitwnd.Create(this, 2,2,CSize(10,10),pContext);
}

 

 

再探MFC(一)基于对话框的MFC应用程序项目框架 大学毕设时学的MFC,工作头一年还用的MFC,之后再也用不到了.当时买的MFC书籍早就束之高阁了.现在需要开发一个简单的桌面程序,于是我又把MFC捡起来.MFC早已过时,不过如果开发简单的Windows桌面应用,MFC不失为一个简单的选择. 阅读详情

相关推荐

MFC对话框编程详细学习笔记

因最近研究工作要用到MFC,故再次重温了孙鑫老师的MFC对话框编程,因所用的编译软件为VS2008,与视频中孙老师使用的VC++6.0有很大出入,造成很大不便,我通过各方查找,实现了VS2008相对应于VC++6.0的方法。现将对话框编程整个视频的详细内容分享如下,希望对有缘看到的朋友提供方便。笔者水平有限,难免有不足之处,欢迎批评指正。 一.准备工作 1.创建一个MFC Applicatio

Bright_Geek的专栏 5064

MFC中的类继承图的基本框架

在类的层次结构中,应用程序类CWinApp是一个基于MFC应用程序的最外层对象容器,它不仅拥有诸如实例句柄等需要被传送到WinMain()函数中去的参数,还包含了应用程序的主框架窗口,当主框架窗口被关闭时,应用程序也就跟着结束了。CView类是在使用文档/视图结构的应用程序中视图对象的基类,它是用户的主要操作界面。从图中可知,在MFC中大多数的类都派生于CObject类,它的主要作用是为子类提供一些基本的功能,这些派生类构成了MFC应用程序的基本框架,它们各自的功能描述如表1所示。包含应用程序的数据集。

sinat_31608641的博客 892

VC++五子棋源码解析:从MFC框架到游戏逻辑实现

在Windows桌面程序开发中,图形用户界面(GUI)的实现是核心技能之一。其原理通常基于消息循环机制,通过事件驱动响应用户操作。在技术价值上,掌握GUI开发不仅能构建交互式应用,还能深入理解操作系统与应用程序的通信方式。应用场景广泛,从工具软件到小型游戏开发均需此技术。本文以经典的VC++五子棋单机版为例,剖析其基于MFC框架的**固定棋盘**设计与**GDI绘图**实现,通过坐标映射、鼠标消息处理等模块,完整展示了如何构建一个基础但功能完备的桌面应用程序,为学习Windows传统开发与游戏逻辑提供实践参

weixin_29015483的博客 249

如何继承CSplitterWnd类

选择一个MFC基类CWnd,然后手工的将.h文件和.cpp文件中所有的CWnd替换成CSplitterWnd ,然后在主框架和主程序类中include进刚才继承的这个类的头文件,就可以了

cn_lijia的专栏 1578

基于VC6.0与MFC实现的计算器程序设计与解析

不仅是设置变量的地方,更是整个对话框进入事件循环前的最后准备阶段。很多一次性配置都应该放在这里完成:// 注册热键 Ctrl+C 清除// 设置定时器用于闪烁错误提示同时也要做好异常检测:if (!MessageBox(_T("致命错误:无法加载显示控件!"));这类检查看似多余,但在实际部署环境中常常能救命。毕竟不是每个人的系统都有完整的DLL支持。至此,我们的计算器已经具备了完整的骨架和神经系统。接下来,就让它真正“动”起来吧!

weixin_36078669的博客 325

MFC类库继承图

包括VC6/VS2005/VS2010/VS2012/VS2013/VS2015的MFC类库继承图。

MFC 继承

用SDK的Win32 API编写各种Windows应用程序,有其共同的规律:首先是编写WinMain函数,编写处理消息和事件的窗口过程WndProc,在WinMain里头注册窗口(Register Window),创建窗口,然后开始应用程序的消息循环。MFC应用程序也不例外,因为MFC是一个建立在SDK API基础上的编程框架。对程序员来说所不同的是:一般情况下,MFC框架自动完成了Windows...

hk121的博客 1403

MFC继承关系

MFC继承关系图,包括所有MFC基础类库中的类,描述了所有类之间的继承关系。

MFC学习笔记(一)MFC基本知识介绍、建立MFC应用程序

MFC学习笔记(一)MFC基本知识介绍建立MFC应用程序 MFC基本知识介绍 1.API 为方便开发Windows应用程序,操作系统提供了各种各样的函数,作为给应用程序编程的接口,(Application Programming Interface),简称为API函数,也就是指系统提供的函数。 例如,Windows中播放声音的API函数,函数原型如下: BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound) pszSound就是你要播放的文

weixin_44074560的博客 1万+

MFC完整类架构、继承图

MFC类架构图,包含绝大多数类,详细的继承关系

ESP32驱动TFT屏幕实战:LVGL与TFT_eSPI完美结合

本文详细介绍了如何在ESP32上结合TFT_eSPI驱动库与LVGL图形库,实现高效、流畅的嵌入式GUI开发。内容涵盖硬件连接、软件环境搭建、库配置、LVGL移植、界面创建及性能优化等全流程实战指南,帮助开发者快速构建低成本、高性能的交互式显示应用。

weixin_29206669的博客 200

飞行大战MFC:重温经典,探索现代编程艺术

飞行大战MFC:重温经典,探索现代编程艺术 去发现同类优质开源项目:https://gitcode.com/ 项目简介 PlaneWar-MFC 是一个基于Microsoft Foundation Class (MFC)库开发的2D飞行射击游戏,重现了经典的飞机大战玩法,同时也为开发者提供了一个学习和实践C++与MFC框架的良好平台。这个游戏以其简洁明快的设计和易于理解的代码结构,让玩家在享受游...

gitblog_00005的博客 707

基础的pdf病毒木马

基础的pdf病毒木马 环境: 攻击机:Kali 目标操作系统:Windows 10或Windows 7 (关闭防火墙和安全软件) 目标软件:Adobe Reader 8.1.2 msf框架搜索:adobe-pdf 1.打开msfconsole 2.搜索 adobe_pdf模块 3.加载攻击模块并设置payload 4.运行生成pdf 5.将pdf拖入到win10 6.打开msf,加...

小小猪的博客 4624

C++ MFC编程

<br />今下午重温了下MFC整体框架。<br />晚上这会继续复习 C++二维游戏编程之 场景<br /> 

lz414255309的专栏 357

MaxEnt软件的下载与安装

1、下载网站:http://lucky-boy.ys168.com/ (这是之前在网上搜到的,里面有许多软件安装包,感谢网页主的资源共享,违权必删)

weixin_42191203的博客 2万+

如何为 Claude Code 配置代理与网络环境

那么大概率不是软件问题,而是。因为 Claude Code 是运行在终端里的,不是浏览器。

sg_knight的专栏 3480

复习MFC之绘图-温故而知新

一、画矩形框 在视图(view)类里面的重绘(ondraw)添加 win32版: HDC dc = ::GetDC(this-&gt;m_hWnd); ::Rectangle(dc,0,0,100,100); ::ReleaseDC(this-&gt;m_hWnd,dc); MFC版: CDC *pDC = this-&gt;GetDC(); pDC-&gt;Rectangle(0...

fa1lr4in的小博客 254

使用 MATLAB/Simulink 构建一个基于FOC控制的PMSM矢量控制仿真模型

本教程详细介绍了基于MATLAB/Simulink的永磁同步电机(PMSM)磁场定向控制(FOC)系统建模与仿真方法。主要内容包括:PMSM电机模型参数设置、Clarke/Park变换模块设计、电流环PID控制器配置、SVPWM调制实现以及系统仿真参数优化。文章提供了模块化设计思路和具体参数设置示例,并给出了PID整定建议和进阶优化方向。通过该仿真模型,可深入理解PMSM矢量控制原理,掌握高性能电机控制系统的建模技巧,适用于伺服系统、电动汽车驱动等高端控制场景。教程还推荐了实时仿真和高级控制策略等扩展应用。

xiaoheshang_123的博客 529

《VC++深入详解》读书笔记——写在最前

从八月底开始进入公司实习,算是从校园进入工作的第一个小阶段,开始开始接触真正的公司运营,接触真正的开发工作。自己在面临Mentor布置的任务时候,往往显得手足无措,开始从头查资料慢慢去完成任务。现在回想起来,前段时间的任务都是比较简单的任务: 针对公司以前的产品修改一个小的功能,主要是设计一个对话框 设计一个ActiveX控件 自己在学校的时候,关于MFC的书籍是看过的,这两类任务实际上都有接触,但

The Code of King 433

Scrapy爬虫之热门网站数据爬取--------第2关

第2关:小说网站玄幻分类第一页小说爬取 任务描述 本关任务:爬目标网页的3本小说保存到本地MySQL数据库,目标网页为全书网玄幻分类首页。 注:考虑到单机(非分布式)爬虫的爬取时间和测试平台的压力,我们不爬更多页数的小说了,可以作为课下作业自己完善。 xpath匹配:循环获取相同标签下的内容 通过网页分析,我们在获取小说的章节名时,发现他们都在标签<DIV class="clearfix dirconone">下的li的a中: 这时,我们可以先把其中所有的li标签先获取到: titles = r

weixin_44949187的博客 2836

【WorkBuddy从入门到精通实战教程】使用手册 第 1 章 初识 WorkBuddy

腾讯推出全场景AI办公助手WorkBuddy,突破传统聊天机器人局限,实现从需求理解到结果交付的全流程自动化。该工具通过自然语言交互,可自主规划执行复杂任务,包括文件处理、数据分析、PPT制作等,支持多模型切换和技能扩展。内置权限管控机制确保本地文件操作安全,显著降低人工切换工具的成本,提升职场效率。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 1318

MFC多文档小例子——vc2015版本

MFC多文档小例子——vc2015版本 去发现同类优质开源项目:https://gitcode.com/ 此项目是一个基于MFC(Microsoft Foundation Classes)的多文档界面(MDI)小例子,使用Visual Studio 2015开发环境创建。项目主要目的是为了学习和实践多文档编程,并包含了以下功能: 实现了多文档界面,可以创建和切换多个文档和视图。 设计了多模板,为...

gitblog_06734的博客 327

Python内置函数zip()——《Python内置函数手册》Python老吕编著

zip()函数是 Python 中的一个内置函数,用于将多个可迭代对象(如列表、元组、字符串等)中对应的元素打包成一个个元组,然后返回由这些元组组成的迭代器。zip()函数常用于将多个序列并行迭代,或者用于数据对齐。zip()它返回一个迭代器,这意味着你可以逐个获取打包后的元素,而不是一次性将所有元素加载到内存中。如果输入的可迭代对象长度不一致,zip()会以最短的可迭代对象为准,只打包到最短对象的末尾。它可以用来并行迭代多个序列,使得代码更加简洁和高效。在接下来的章节中,我们将详细介绍。

Python老吕的博客 680

MFC框架实战:从零实现2048游戏,掌握桌面应用开发核心

消息驱动架构是Windows桌面应用开发的基石,它定义了程序如何响应用户输入和系统事件。其核心原理在于事件循环与回调机制,通过消息队列实现异步通信。掌握这一模式对于理解现代GUI框架(如Qt、WinUI)的底层思想具有重要价值,尤其在需要精细控制界面交互和资源管理的工程实践中。在经典的文档-视图(Document-View)架构中,数据逻辑与界面显示分离,这为构建可维护的桌面应用提供了清晰范式。本文以C++和MFC框架为例,通过实现一个完整的2048游戏项目,深入解析如何将游戏规则封装进Doc-View结构

weixin_29235525的博客 263

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MFC实战:C++分组工具开发与Windows桌面应用架构解析

在Windows桌面应用开发领域,文档-视图架构是一种经典的设计模式,它将数据管理与用户界面分离,提升了代码的可维护性和复用性。其核心原理在于通过文档类封装数据模型和业务逻辑,视图类负责数据呈现和用户交互,框架类则管理应用程序的整体结构。这种架构的技术价值在于能够高效地处理复杂的业务数据流,尤其适合需要持久化存储和多种视图展示的数据密集型应用。在工业控制、传统桌面软件维护等对稳定性和Windows原生集成有高要求的场景中,基于MFC库实现文档-视图架构成为务实的选择。本文聚焦于利用MFC开发一个数据分组工具

weixin_27134495的博客 250

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: ATL Internals 笔记
下一篇: debug与release区别
keepdoingit
博客等级 码龄17年 27粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值