逃跑按钮

编程项目:实现随机移动的逃跑按钮 本章节将探讨如何实现一个具有随机特性的逃跑按钮,这是一种常见的用户界面设计元素,旨在为用户提供一种随时能够中断当前操作的快速方式。这不仅是一个简单的功能实现,还是一个涉及用户交互、事件处理和随机算法设计的有趣话题。通过上述简单的实现,我们可以看到,逃跑按钮的随机实现不仅仅是前端编程的问题,也涉及到交互设计和用户体验的思考。在后续章节中,我们将进一步深入探讨用户界面设计原则、事件驱动编程、随机数生成技术、图形界面布局与动画效果、多线程与异步处理以及编程语言和库的选择。 阅读详情

逃跑按钮

    此处,我们为我们创建的按钮又定义了一个新的类,以便来捕获鼠标消息,而没直接用CButton类对象来直接捕获鼠标消息消息是因为:1、一个对话框上可能有多个按钮,而其他的按钮我们并不想让其实现逃跑功能;
                          2、我们只能为我们自己定义的类添加我们关心的消息处理函数(在ClassView中的相应类上点右键,选add windows message....);<此处也就是将1否决了,所以1就成了不是原因的原因了>
    注意:此处的鼠标移动消息,我们是让我们自己定义的按钮类(对象)来捕捉的,所以是CWeiXinBtn:: OnMouseMove()
    其实,此处的CWeiXinBtn::OnMouseMove()原理,内含有这样的意思:当我们定义的新按钮类的某对象的OnMouseMove()函数得到调用,则其肯定已经得到鼠标焦点了;又因为鼠标的移动是连续的,所以当某按钮一得到鼠标焦点,只要鼠标再有轻微的移动,就调用OnMouseMove()函数,便实现了按钮逃跑;
    可以肯定的说:在鼠标移到某控件上的瞬间,控件获取焦点这个事实和鼠标移动这个消息是同时发生的。

BOOL CTestDlg::OnInitDialog()   //不是在CNewButton类中赋值
{
 ......
 // TODO: Add extra initialization here
 m_btn1.m_pBtn=&m_btn2;        //让各自按钮保存另一个的地址

 m_btn2.m_pBtn=&m_btn1;       

 return TRUE;  // return TRUE  unless you set the focus to a control
}

 

void CWeiXinBtn::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 ShowWindow(SW_HIDE);  //当前隐藏
 m_pBtn->ShowWindow(SW_SHOW);   //另一个显示
 CButton::OnMouseMove(nFlags, point);
}

------------------------------------------------------------------------------------------------

属性表单和向导的创建

    一个属性页窗口就是一个对话框窗口;添加属性页的一个页,就在Insert对话框中选Dialoge中的IDD_PROPPAGE_.....,需要几个属性页,就重复这样的操作几次即可。
注意区分:单选框、复选框、列表框、组合框   一个组合框提供了编辑框加列表框的功能
    注意:在放置组合框的同时,我们要将其适当拉大;这样当程序运行时,我们点击向下按钮,就无法看到其中的内容了。
    组合框有三种类型:1、DROPDOWN:其是可以输入内容的,当然也有列表框的功能;2、simple:其编辑框和列表框是同时显示的,不需点击向下按钮;3、drop list:其编辑框是不能输入的,只能通过列表框进行选择。
    此处我们为我们的三个属性页生成三个新的类,并选择基类为CPropertyPage
    在上面的生成新类的向导的最后,VC++经常会有这样的提示:不能打开某某.h文件和相应的.cpp文件;其实,新类我们已经创建完成,只是其没有在ClassView中没有显示他们而已;解决办法:关闭工程,在工程目录下,将.clw文件删除,再次打开工程,为工程新建一个同名的clw文件即可。
    为工程添加一个以CPropertySheet为基类的新类,通过CPropertySheet::AddPage()函数添加属性页,通过CPropertySheet::DoModal() 或者 CPropertySheet::Create()函数显示属性页;
    属性页、属性表单:1、属性表单是属性页的集合;2、属性页是从CDialog中派生而来的;3、属性表单是从CWnd中派生而来的。
在两个构造函数中都添加。
插入属性页资源遇到的一个问题:如果我们要插入的属性页对话框上有中文,则需在属性页资源的属性中选择语言为中文;当然要是我们插入的是一般对话框,则不会有此类问题。
二、生成向导对话框
    我们只需要在上面的工作的基础上,在调用CPropertySheet::DoModal()之前,调用CPropertySheet:: SetWizardMode() 函数即可。
(上面的工作并不十分完美,即第一个对话框有“上一步”按钮,最后一个对话框有“下一步”按钮,且没“完成”按钮)我们可以通过重新定义虚函数virtual BOOL CPropertyPage::OnSetActive(),并在其中使用void CPropertySheet::SetWizardButtons(DWORD dwFlags)来加以改变。
(要重新定义类的虚函数,可以在类上点击右键,选“Add Virtual Function....”来添加。)
虚函数virtual BOOL CPropertyPage::OnSetActive()是由框架调用的,当用户选择属性页或激活向导对话框时调用,它的调用是在CPropertySheet::DoModal()之前调用的。
    在属性页的类中,要得到属性表单的对象指针,我们只需调用GetParent()函数,并强制类型转换即可,如:((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT); 。
    单选按钮的分组,一次分组的结束是遇到另一个也具有group属性的单选按钮;索引号0、1、2......
    向导对话框中的属性页中的“下一步”按钮的消息响应是通过,在该属性页中重新定义虚函数OnWizardNext()来完成的。
 OnWizardNext()函数的返回值有含义:为0,对话框中的属性页转到下一页;为-1,对话框中的属性页不改变。
 组合框中的内容:1、在程序代码中添加的,(一般在BOOL CPropertyPage::OnInitDialog()函数中添);   2、在其属性中设置;
    组合框中的属性选项sort若被选中,则组合框自动为我们添加的内容排序;若取消该选项,则其安我们程序代码添加的顺序来显示相应的内容。
   int CComboBox::SetCurSel( int nSelect )函数来设置组合框的默认选项,
   当与控件相关联的变量的值为-1,表明没有选中任何选项;当值为0,表明选中第一个;为1,表明选中第二个;.......
   通过int CComboBox::GetCurSel()函数,获取当前选项的索引值;而void CComboBox::GetLBText( int nIndex, CString& rString )函数,则可以通过已有的索引值来得到相应的字符串的值;
窗口和对象并不是同一个概念。
字体:1、定义字体对象;2、创建字体;3、选入字体,并保存先前的字体;
属性表单类的CPropertySheet::DoModal()函数的返回值或者为ID_WIZFINISH,或者为IDCANCEL;我们可以通过判断其返回值,来决定下一不该如何做。
    OnInitDialog():窗口完全被创建,但还没有被显示时调用。

 

 //创建属性表单 PropSheet.h

 #include "Prop1.h"
#include "Prop2.h"
#include "Prop3.h"
class CPropSheet : public CPropertySheet
{
public:
 CPropSheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);  //两个构造函数
 CPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);

public:
 CProp1 m_prop1;
 CProp2 m_prop2;
 CProp3 m_prop3;
 virtual ~CPropSheet();

 };

 -----------------------------

//PropSheet.cpp

PropSheet::CPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
 :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
 AddPage(&m_prop1);  //将属性页加入属性表单
 AddPage(&m_prop2);
 AddPage(&m_prop3);
}

CPropSheet::CPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
 :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
 AddPage(&m_prop1);
 AddPage(&m_prop2);
 AddPage(&m_prop3);
} 

 ------------------------------------

//PropView.cpp

#include "PropSheet.h"

CPropView::CPropView()
{   //在视类中接收选择的信息
 // TODO: add construction code here
 m_iOccupation=-1;
 m_strWorkAddr="";
 memset(m_bLike,0,sizeof(m_bLike));
 m_strSalary="";
}
void CPropView::OnPropertysheet()
{
 // TODO: Add your command handler code here
 CPropSheet propSheet("维新属性表单程序");  //属性页的名称,向导中不显示

 //propSheet.DoModal();   //属性页模式


 propSheet.SetWizardMode();  //向导模式
 if(ID_WIZFINISH==propSheet.DoModal())  //点击了完成
 {    //在视类中接收选择的信息
  m_iOccupation=propSheet.m_prop1.m_occupation;
  m_strWorkAddr=propSheet.m_prop1.m_workAddr;
  m_bLike[0]=propSheet.m_prop2.m_football;
  m_bLike[1]=propSheet.m_prop2.m_basketball;
  m_bLike[2]=propSheet.m_prop2.m_volleyball;
  m_bLike[3]=propSheet.m_prop2.m_swim;
  m_strSalary=propSheet.m_prop3.m_strSalary;
  Invalidate();  //使窗口无效,引起窗口重绘
 }
}

//输出选择的信息

 void CPropView::OnDraw(CDC* pDC)
{
 CPropDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // TODO: add draw code for native data here
 CFont font;
 font.CreatePointFont(300,"华文行楷");

 CFont *pOldFont;
 pOldFont=pDC->SelectObject(&font);

 CString strTemp;
 strTemp="你的职业:";

 switch(m_iOccupation)
 {
 case 0:
  strTemp+="程序员";
  break;
 case 1:
  strTemp+="系统工程师";
  break;
 case 2:
  strTemp+="项目经理";
  break;
 default:
  break;
 }
 pDC->TextOut(0,0,strTemp);

 strTemp="你的工作地点:";
 strTemp+=m_strWorkAddr;

 TEXTMETRIC tm;
 pDC->GetTextMetrics(&tm);

 pDC->TextOut(0,tm.tmHeight,strTemp);

 strTemp="你的兴趣爱好:";
 if(m_bLike[0])
 {
  strTemp+="足球 ";
 }
 if(m_bLike[1])
 {
  strTemp+="篮球 ";
 }
 if(m_bLike[2])
 {
  strTemp+="排球 ";
 }
 if(m_bLike[3])
 {
  strTemp+="游泳 ";
 }
 pDC->TextOut(0,tm.tmHeight*2,strTemp);

 strTemp="你的薪资水平:";
 strTemp+=m_strSalary;
 pDC->TextOut(0,tm.tmHeight*3,strTemp);

 pDC->SelectObject(pOldFont);
}

------------------------------------------

 BOOL CProp1::OnSetActive()
{
 // TODO: Add your specialized code here and/or call the base class
 ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT);  //第一页只有下一步
 return CPropertyPage::OnSetActive();
}

CProp1::CProp1() : CPropertyPage(CProp1::IDD)
{
 //{{AFX_DATA_INIT(CProp1)
 m_occupation = -1;
 m_workAddr = _T("");  //字符串的初始化
 //}}AFX_DATA_INIT
}

LRESULT CProp1::OnWizardNext()
{
 // TODO: Add your specialized code here and/or call the base class
 UpdateData();
 if(m_occupation==-1)   //初值设置成-1、成员函数m_occupation,m_workAddr都要设为public
 {
  MessageBox("请选择你的职业!");
  return -1;
 }
 if(m_workAddr=="")
 {
  MessageBox("请选择你的工作地点!");
  return -1;
 }
 return CPropertyPage::OnWizardNext();
}

BOOL CProp1::OnInitDialog()
{
 CPropertyPage::OnInitDialog();             //给列表框中添加内容
 
 // TODO: Add extra initialization here
 ((CListBox*)GetDlgItem(IDC_LIST1))->AddString("北京");
 ((CListBox*)GetDlgItem(IDC_LIST1))->AddString("天津");
 ((CListBox*)GetDlgItem(IDC_LIST1))->AddString("上海");
 return TRUE;  // return TRUE unless you set the focus to a control
               // EXCEPTION: OCX Property Pages should return FALSE
}

---------------------------------- 

BOOL CProp2::OnSetActive()
{
 // TODO: Add your specialized code here and/or call the base class
 ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
 return CPropertyPage::OnSetActive();
}

LRESULT CProp2::OnWizardNext()
{
 // TODO: Add your specialized code here and/or call the base class
 UpdateData();
 if(m_football || m_basketball || m_volleyball || m_swim)
 {
  return CPropertyPage::OnWizardNext();
 }
 else
 {
  MessageBox("请选择你的兴趣爱好!");
  return -1;
 }
}

---------------------------------------- 

 BOOL CProp3::OnSetActive()
{
 // TODO: Add your specialized code here and/or call the base class
 ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
 return CPropertyPage::OnSetActive();
}

BOOL CProp3::OnInitDialog()
{
 CPropertyPage::OnInitDialog();
 
 // TODO: Add extra initialization here
 ((CComboBox*)GetDlgItem(IDC_COMBO2))->AddString("1000元以下");
 ((CComboBox*)GetDlgItem(IDC_COMBO2))->AddString("1000-2000元");
 ((CComboBox*)GetDlgItem(IDC_COMBO2))->AddString("2000-3000元");
 ((CComboBox*)GetDlgItem(IDC_COMBO2))->AddString("3000元以上");

 ((CComboBox*)GetDlgItem(IDC_COMBO2))->SetCurSel(0);  //第一项作为默认的
 return TRUE;  // return TRUE unless you set the focus to a control
               // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CProp3::OnWizardFinish()
{
 // TODO: Add your specialized code here and/or call the base class
 int index;
 index=((CComboBox*)GetDlgItem(IDC_COMBO2))->GetCurSel();   //获取选择的索引值
 ((CComboBox*)GetDlgItem(IDC_COMBO2))->GetLBText(index,m_strSalary);  //获取选择的内容
 return CPropertyPage::OnWizardFinish();
}

逃跑按钮的实现 MFC 代码 逃跑按钮的实现 呵呵MFC 代码 逃跑按钮的实现 呵呵 立即下载

相关推荐

MFC VS2012环境 逃跑按钮

逃跑按钮

基础语法篇_7——MFC对话框:逃跑按钮、属性表单、向导创建

文章目录一、基于对话框的程序二、“逃跑”的按钮三、属性表单和向导的创建3.1 创建属性页 一、基于对话框的程序 新建一个基于对话框的项目,项目名称:DlgTest。 生成的项目结构为: 解决方案结构: 类视图下有三个类: CAboutDlg 派生于CDialog类,这个类与SDI应用程序中相应的类:CAboutDlg作用相同,用于显示一个关于对话框。 CDlgTestApp 这是MFC应用...

WaitFoF 2267

逃跑按钮,实现代码

用vs2010 MFC实现的简单逃跑按钮,可以学习如何在按键中捕获windows鼠标消息并响应。

MFC学习——“逃跑”按钮的实现

如何设计对话框程序上的“逃跑”按钮,即每当鼠标移动到Btn上面的时候就会自动跑到另外一个地方,看上去鼠标好像永远无法点中? 讨巧:设置鼠标WM_MOUSEMOVE的响应函数用于捕获鼠标移动操作,每当鼠标移动到btn上就修改属性隐藏,同时修改另一个btn的属性为显示,造成btn自动“逃跑”的假象。 步骤: 1、创建基于对话框的应用程序 新建-MFC项目-选择“基于对话框”就可以了,然后就会得

小凡的专栏 2547

逃跑按钮实现的一种巧妙方法

我们从网上经常下载一些小程序,点击安装后,会在桌面上显示一个小人或小动物,当我们用鼠标点击的时候,会发现怎么也点不到,这其实就是一种逃跑按钮的实现

会跑的按钮

VC++ 制作的一款很有趣的小游戏,一个会在程序里跑的按钮。

MFC 逃跑按钮-请假申请小游戏

讨巧:设置鼠标WM_MOUSEMOVE的响应函数用于捕获鼠标移动操作,每当鼠标移动到btn上就修改属性隐藏,同时修改另一个btn的属性为显示,造成btn自动“逃跑”的假象。2、右键Button(不同意)和(再想想),添加变量-》添加控件,名称分别取为 m_btn_left和m_btn_right.如何设计对话框程序上的“逃跑”按钮,即每当鼠标移动到Btn上面的时候就会自动跑到另外一个地方,看上去鼠标好像永远无法点中?3、打开资源视图,右键项目-》类向导-》添加MFC类,创建新类CMyButton。

yy_xzz的博客 114

ClearML中文文档实战:从安装到第一个实验的保姆级教程

本文提供ClearML从零开始的实战指南,涵盖核心组件理解、Python SDK安装、服务器配置及首个自动化实验的完整流程。通过改造PyTorch训练脚本的实例,详细演示了如何利用ClearML自动记录实验参数、指标与模型,实现机器学习实验的可复现性与高效管理,并简要介绍了进阶的自动化工作流。

weixin_29216049的博客 398

14再论逃跑按钮的实现

--------------------------------------------------------------------------- VC 驿站 WwW.CcTry.CoM 多抽出一分钟时间来学习,让你的生命更加精彩! C、C++、VC++ 各种学习资源,免费教程,期待您的加入! 动画教程只是起到技术交流的作用,请大家不用利用此方法做非法用途. 由此动画造成的任何后果

L_WoNiu的专栏 302

医院网络设计(完整文档+思科拓扑图)

大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量的经验。我相信分享是一种双赢的方式,通过分享,我可以帮助他人提升技术水平,同时也能够得到学习交流的机会。在我的文章中,你将会看到我对于各种编程语言、开发工具以及常见问题的解析和分析。我会结合自己的实际项目经验,为你提供实用的解决方案和优化技巧。

qq1325513482的博客 2万+

保姆级教程:手把手配置MAX9295/9296 GMSL2-CSI2链路,搞定4LAN/1LAN模式与常见调试

本文提供MAX9295/9296 GMSL2-CSI2链路的详细配置教程,涵盖4LAN和1LAN模式的硬件连接、寄存器配置及调试技巧。通过实战案例和代码示例,帮助开发者快速实现高带宽视频传输,解决常见问题如信号同步和功耗优化,适用于车载摄像头和机器人视觉系统开发。

weixin_42561143的博客 434

孙鑫对话框二逃跑按钮中为什么为按钮新建一个类

为类添加消息处理函数与成员变量,因为要对控件添加WM_MOUSEMOVE消息处理函数,而控件变量本身不能加消息处理函数,只有类才能添加,所以要创建CNewButton类,然后使按钮控件属于这个类,当鼠标指针移动到这个类的按钮控件上时,就能响应这个函数。 原本应该昨天来写的,今天虽然是周末,但是还是来补上吧!今天主要学习如何设计对话框程序上的“逃跑”按钮,即每当鼠标移动到Btn上面的时

plory1089的专栏 581

mysql笔记:23. 在Mac上安装与卸载MySQL

MySQL对Mac电脑的适配十分强大,再加上Mac本身就是Unix操作系统演化而来的,所以在Mac上安装MySQL的方式有多种。常见的方法有如下三种:DMG、brew、TAR。介绍这些方法前,我们先了解下MySQL安装文件的下载。

斌斌(Java) 2249

VC学习实例:逃跑按钮

VC学习实例:逃跑按钮   SkySeraph NOV.4sh 2010  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date:NOV.9sh 2010 HQU 前期: ①对话框; ②新建CButton类CNewButton,用来捕获鼠标移动消息; ③添加两个按钮,属性为"你能抓住我吗?"关联成员变量m_bt...

weixin_34324081的博客 138

<Verilog实现除法器> Verilog实现牛顿-拉夫逊(Newton-Raphson)除法器

阿斯顿阿斯顿啊啊是打发士大夫

IC跳跳鱼的博客 3586

OmniBox2.0.X版本 一站式影视订阅与多端播放平台文档

OmniBox 是一站式影视订阅与多端播放平台:你可以用 JS 或 Python 按 OmniBox 规范自建爬虫源,在后台把多个爬虫源自由组合成订阅,然后在网页、手机、电视等全平台的客户端里使用。只要客户端支持 TVBox、猫源、UZ、Emby 等协议,即可无缝对接。同时支持电视直播源、六大平台直播间和网盘源视频在线观看,通过 Docker 一键部署。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1909

VC----MFC对话框(3)【“逃跑”按钮的实现】

原本应该昨天来写的,今天虽然是周末,但是还是来补上吧!今天主要学习如何设计对话框程序上的“逃跑”按钮,即每当鼠标移动到Btn上面的时候就会自动跑到另外一个地方,看上去鼠标好像永远无法点中。其实今天我们使用一个有些讨巧的方法:设置鼠标WM_MOUSEMOVE的响应函数用于捕获鼠标移动操作,每当鼠标移动到btn上就修改属性隐藏,同时修改另一个btn的属性为显示,造成btn自动“逃跑”的假象。方法不难,

yiziweiyang的专栏 673

RSL-RL:开源人形机器人强化学习控制研究库

摘要:RSL-RL是一款专为机器人领域设计的开源强化学习库,其核心特点是紧凑性、可修改性和高性能。该库聚焦PPO和BC两大主流算法,并整合了对称性增强、好奇心驱动等机器人专用技术。通过纯GPU训练优化,RSL-RL在大型仿真中展现出卓越的吞吐性能,已成功应用于腿足运动控制、全身协调等多个机器人研究场景。其轻量级架构包含运行器、算法和网络三个可独立修改的组件,支持TensorBoard等主流日志工具。该框架特别适合需要快速原型开发的机器人研究者,但不适用于通用机器学习基准测试。开源地址:https://git

2506_90492529的博客 1674

MFC学习日记十一:Mfc基于对话框编程之逃跑按钮(第八课)

8:  在一个基于对话框的应用程序,没有从CWnd派生出来的View的视类,也没有从CFrameWnd派生出来的框架类,只有从CDialog派生出来的对话窗类。 逃跑按钮: 想法: 可以设计两个按钮,隐藏其中一个,当鼠标放在显示的按钮上的时候,隐藏这个按钮,并且显示那个另一个按钮,相应的鼠标放在另一个上的时候隐藏它显示当前被隐藏的。 1、在资源编辑器中新建两个按钮,把其中一个的属性-

万里独行 1452

scottplot5中使用signalXY图,如何更新数据?

🏆本文收录于《优快云问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 2436

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

MFC之自定义控件(逃跑的按钮)和在按钮加载位图18

1 自定义控件(逃跑的按钮) 1)首先创建基于对话框的项目。 2)创建自定义按钮类。注意一下,此时的自定义类与对话框还没关系,区别前几篇自定义对话框的做法(自定义对话框有关联)。 3)然后在对话框中添加一个按钮,右击添加变量。 此时在对话框类会有一个成员变量类型MyButton。现在我们对话框和自定义的按钮类就关联上了。 4)由于我们要实现的是自定义按钮的逃跑事件,即把按钮当做窗口,所以我们需要在自定义按钮类中实现按钮的鼠标移动事件。 添加鼠标移动事件就是右击MyButton类点击属性,然后选择右方

weixin_44517656的博客 921

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 定制应用程序外观
下一篇: 对话框
Enbiting
博客等级 码龄18年 19粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值