精华内容
下载资源
问答
  • 单选框和复选框控件

    2019-10-25 11:45:06
    参考链接:https://blog.csdn.net/tcjiaan/article/details/8559633 ... 单选按钮(RadioButto)和复选框(CheckBox)都属于BUTTON类,只是应用了不同的style 一、单选框 CreateWindow(L"St...

    参考链接:https://blog.csdn.net/tcjiaan/article/details/8559633

    https://blog.csdn.net/u014660247/article/details/52851259

    单选按钮(RadioButto)和复选框(CheckBox)都属于BUTTON类,只是应用了不同的style

    一、单选框

    CreateWindow(L"Static",L"你喜欢哪一种颜色?",
    	WS_CHILD | WS_VISIBLE | SS_SIMPLE,
    	10,yLoc,150,18,hwnd,NULL,hthisapp,NULL);
    //第一组单选按钮
    yLoc += 22;
    CreateWindow(L"Button",L"蓝色",WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP,
    	12,yLoc,60,16,hwnd,(HMENU)IDC_RADBTNBLUE,hthisapp,NULL);
    yLoc += 20;
    CreateWindow(L"Button",L"红色",WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
    	12,yLoc,60,16,hwnd,(HMENU)IDC_RADBTNRED,hthisapp,NULL);
    yLoc += 20;
    CreateWindow(L"Button",L"绿色",WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
    	12,yLoc,60,16,hwnd,(HMENU)IDC_RADBTNGREEN,hthisapp,NULL);

    注意:
    1.凡是设置了WS_GROUP的单选框做为一组中的首元素,随后的所有单选按钮都和它在同一组,直到下一个设置了WS_GROUP样式的单选按钮。
    2.使用BS_RADIOBUTTON属性点击它的时候,不会自动被选中,使用BS_AUTORADIOBUTTON后,系统就会自动处理选择状态

    二、复选框
    1.获取和设置选择状态
    BM_SETCHECK
        wParam -- 状态
        lparam -- 不用,给0;
    BM_GETCHECK:
        wParam/lParam -- 都为0,其状态通过SendMessage的返回值判断
        返回值: BST_CHECKED  BST_UNCHECKED

    //手动 复选框 自己维护
    CreateWindowEx(0, L"BUTTON", L" CheckBox", WS_CHILD | WS_VISIBLE | BS_CHECKBOX,
    50, 100, 200, 30, hWnd, (HMENU)1003, hInst, NULL);
     // 自动复选框 系统维护
    CreateWindowEx(0, L"BUTTON", L" AutoCheckBox", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
    50, 140, 200, 30, hWnd, (HMENU)1004, hInst, NULL);
     // 三态 自己维护
    CreateWindowEx(0, L"BUTTON", L"3State", WS_CHILD | WS_VISIBLE | BS_3STATE,
    50, 180, 200, 30, hWnd, (HMENU)1005, hInst, NULL);
    // 自动三态 系统维护
    CreateWindowEx(0, L"BUTTON", L"Auto3State", WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
    50, 220, 200, 30, hWnd, (HMENU)1006, hInst, NULL);
    手动设置复选框状态:
    case WM_COMMAND:
    wmId    = LOWORD(wParam);
    wmEvent = HIWORD(wParam);
    // 分析菜单选择: 
    switch (wmId)
    {
    	case 1003:
    	{
    		// wmId = LOWORD(wParam);
    		// wmEvent = HIWORD(wParam);
    		if (wmEvent == BN_CLICKED)
    		{
    			//MessageBox(NULL, L"....", L"Infor", MB_OK);
    			HWND child = GetDlgItem(hWnd, 1003);
    			int ret = SendMessage(child, BM_GETCHECK, 0, 0);
    
    
    			if (ret == BST_CHECKED)
    			{
    				SendMessage(child, BM_SETCHECK, BST_UNCHECKED, 0);
    				// MessageBox(NULL, L"....", L"Infor", MB_OK);
    			}
    			else
    				SendMessage(child, BM_SETCHECK, BST_CHECKED, 0);
    		}
    	}
    }

     

    展开全文
  • 单选按钮Option和复选按钮Check是用于实现选择操作的控件,前者可实现单选,后者可实现多选。框架Frame控件可以用来对窗体上的控件进行分组。在同一框架下的单选按钮有且只能被选中一项,而复选按钮则可以选择多项...

    单选按钮Option和复选按钮Check都是用于实现选择操作的控件,前者可实现单选,后者可实现多选。框架Frame控件可以用来对窗体上的控件进行分组。在同一框架下的单选按钮有且只能被选中一项,而复选按钮则可以选择多项,也可以一项都不选择。下面来介绍这3个控件的常用属性和基本用法。

    单选按钮Option

    单选按钮的常用属性
    对于通用属性而言,前面的课程已经介绍过了,再次就不进行介绍了,其用法都是一样的,例如Name、Caption等属性都属于所有控件的通用属性,这类通用属性以后的控件都不在重复介绍。

    Value属性
    返回或设置单选按钮的状态,属性值为True时,表示被用户选中,属性值为False时,表示未被选中。语法如下

    Option1.Value = True  '将单选按钮置为被选中状态
    变量名称V=Option1.Value  '将单选按钮状态值返回给变量V
    

    复选按钮Check

    复选按钮Check的常用属性

    Value属性
    返回或设置单选按钮的状态,属性值为1时,表示被用户选中,属性值为0时,表示未被选中,属性值为2时表示禁止用户选择,语法如下

    Check1.Value = 1  '将复选按钮设置为选中状态
    变量名称V=Check1.Value  '将复选按钮状态值返回给变量V
    

    框架Frame
    框架是一种容器,是除了窗体外还可以作为容器的另一个控件。可以利用框架将控件进行分组,要对控件进行分组,必须先绘制出框架,然后在框架中绘制控件。如果需要将已有的控件放到框架内,可以利用剪切命令,将已有控件粘贴到框架内。

    这3个控件的属性、方法和事件都相对简单,最重要的属性就是Value属性了,这里需要注意的是,单选按钮Value属性值是boolean类型的,只有True和False两个值,而复选框的Value属性值是整数型的,可以取0、1、2三个值。下面通过一个实例来练习一下这三个控件吧。

    实战操作题
    目标:设计一个可以设置文本框文本格式的应用。效果如下图:

    步骤一:
    新建一个工程,并按照下图绘制控件。分别是,3个框架,框架内分别是单选框3个,单选框3个和复选框3个,以及文本框一个。

    在这里插入图片描述

    为了达到美观的效果,控件之间的位置要对齐,手动对齐麻烦的话,这里可以通过工具栏的窗体编辑器工具,自动调整控件的位置。以左边对齐为例,其方法为:先选中两个控件,然后单击工具栏中的左对齐按钮,即可自动对齐。需要注意的是,先被选中的控件将会向后被选中的控件移动,以完成对齐指令。

    在这里插入图片描述

    步骤二:
    修改控件的Caption属性,可以在属性窗口设置,也可以在代码区中设置。这里在属性窗口设置即可。

    在这里插入图片描述

    步骤三:
    进入代码区,按照下图设置代码。需要逐一编写每个单选框和复选框的单击事件。

    在这里插入图片描述

    重要提示:在输入代码时,输入一个对象名称后再输入点号"."后,会自动弹出可以使用的属性和方法。但是对于对象名称和vb中的常量等,因为不需要输入点号,所以无法自动弹出提示,对于初学者而言,很多符号难以记住,这就带来了学习编程的困难。实际上这时,我们可以按快捷键Ctrl+J即可呼出提示框,例如要输入vbGreen,可以输入vbg然后按下Ctrl+J的快捷键,即可在弹出的提示框中选择vbGreen了。怎么样,有了这一招后,是不是对编程又提升了信心?

    在这里插入图片描述

    步骤四:
    运行程序,测试应用程序,选中字体大小、背景颜色和字形,即可改变文本框内的文本格式。

    在这里插入图片描述

    这里,代码区用到了很多事件过程,实际上,在后面的课程我们会学习到控件的数组,即index属性。利用控件数组功能,可以非常简洁的完成本节课程案例。

    好啦,本节课程关于单选按钮和复选框以及框架就全部学习完啦,希望能够对小伙伴有帮助。我们下节课程再见吧。

    展开全文
  • 打开电脑,进入Windows操作系统,在资源管理器的左边栏中清楚地显示了系统管理的任何磁盘的信息连同各个磁盘所...Windows中将这种结构封装为“树形控件”,即TreeView控件,他ListView、Button等相同都属于系统自...
     打开电脑,进入Windows操作系统,在资源管理器的左边栏中清楚地显示了系统管理的任何磁盘的信息连同各个磁盘所容纳的文档和文档夹(如图一)。这种常见的显示方式是由一个根节点和若干个子节点构成的,这被称为“树形结构”。这种树形结构的用途很广泛,在很多常用软件中都出现过他的身影。Windows中将这种结构封装为“树形控件”,即TreeView控件,他和ListView、Button等相同都属于系统自带的通用公共控件。在Delphi中,TreeView也被封装成了VCL组件,他的位置在“Win32组件”面板上,是我们最常用的几个组件之一。


      Delphi自带的TreeView组件能够显示树形结构,也能够为每个节点指定不同的图标来区分各自的功能。但在平时的使用中,我们发现他并不能嵌入CheckBox或是RadioButton组件,这样用户就不能直观地选择某一部分节点或某个节点。怎样来解决这个问题呢?我们思考之后发现,有两种思路能够完成前面所述的任务。一种是在TreeView组件的基础上继承的他的功能,并添加所要的功能(使TreeView能嵌入CheckBox或是RadioButton组件)即重写一个组件。另一种是利用用户的错觉,将CheckBox或是RadioButton所能实现的外观用两种状态的图片(一种是选中状态另一种是未选中状态)来交替显示,走迂回路线来完成任务。我们来分析一下这两种方法的优缺点:第一种方法要重写一个组件,显然难度较大,所用时间较长;第二种方法,利用TreeView组件本身就具备的显示图标功能,简便易行,所用时间短,能够完成需求。比较之后,我们选择作用第二种方法,先来看一下完成之后的效果(如图二),应该说是达到了目的,现在我们来细述一下完成的过程:


      首先,我们在Win32面板上选择ImageList组件,配置他的StateImages属性,包括两种状态的图标,一种是选中状态,另一种是未先中状态。

      其次,我们调用ToggleTreeView过程(实现方法见后文),实现在鼠标单击和键盘选择的状态下改变状态图标的功能。

      ToggleTreeView过程实现代码如下:

      procedure ToggleTreeViewCheckBoxes(
       Node :TTreeNode;
       cUnChecked, //CheckBox未选中状态
       cChecked, //CheckBox选中状态
       cRadioUnchecked, //RadioButtion未选中状态
       cRadioChecked :integer); // RadioButtion选中状态
      var
       tmp:TTreeNode;
      begin
       if Assigned(Node) then
       begin
      //假如当前是未选中状态则变为选中状态
       if Node.StateIndex = cUnChecked then
       Node.StateIndex := cChecked
      //假如当前是选中状态则变为未选中状态
       else if Node.StateIndex = cChecked then
       Node.StateIndex := cUnChecked
       else if Node.StateIndex = cRadioUnChecked then
       begin
       tmp := Node.Parent;
       if not Assigned(tmp) then
       tmp := TTreeView(Node.TreeView).Items.getFirstNode
       else
       tmp := tmp.getFirstChild;
       while Assigned(tmp) do
       begin
       if (tmp.StateIndex in
       [cRadioUnChecked,cRadioChecked]) then
       tmp.StateIndex := cRadioUnChecked;
       tmp := tmp.getNextSibling;
       end;
       Node.StateIndex := cRadioChecked;
       end; // if StateIndex = cRadioUnChecked
       end; // if Assigned(Node)
      end;
     第三,上面的代码解决的是状态图标转换的问题,那怎样解决在鼠标单击和键盘选择之后就改变状态呢?下面给出实现代码:

      (1)当鼠标单击时,代码如下:

      procedure TForm1.TreeView1Click(Sender: TObject);
      var
       P:TPoint;
      begin
       GetCursorPos(P); //得到光标的位置
       P := TreeView1.ScreenToClient(P);
       if (htOnStateIcon in
       TreeView1.GetHitTestInfoAt(P.X,P.Y)) then
       ToggleTreeViewCheckBoxes(
       TreeView1.Selected,
       cFlatUnCheck,
       cFlatChecked,
       cFlatRadioUnCheck,
       cFlatRadioChecked);
      end;

      (2)当键盘选择时,代码如下:

      procedure TForm1.TreeView1KeyDown(
       Sender: TObject;
       var Key: Word;
       Shift: TShiftState);
      begin
       if (Key = VK_SPACE) and
       Assigned(TreeView1.Selected) then
       ToggleTreeViewCheckBoxes(
       TreeView1.Selected,
       cFlatUnCheck,
       cFlatChecked,
       cFlatRadioUnCheck,
       cFlatRadioChecked);
      end;

      最后,我们给出一个小例子,来验证一下的我们试验的结果。在窗体上的摆放TreeView、ImageList、Button和一个Memo组件(如图三),在加入上面的代码之后,我们来编写这个Button的单击事件的代码:

        procedure TForm1.Button1Click(Sender: TObject);
        var
         BoolResult:boolean;
         tn : TTreeNode;
        begin
         if Assigned(TreeView1.Selected) then
         begin
         tn := TreeView1.Selected;
         BoolResult := tn.StateIndex in
         [cFlatChecked,cFlatRadioChecked];
         Memo1.Text := tn.Text +
         #13#10 +
         ’Selected: ’ +
         BoolToStr(BoolResult, True);
          //Memo给出所选中的节点和当前的状态
         end;
        end;




      因为篇幅所限,上面的例子给出是最简单的一个情况,假如要编写更为专业的软件,请读者朋友充分发挥想象,一定做出更好的效果(如图四)。

    转载于:https://www.cnblogs.com/tecsoon/archive/2009/04/14/1435547.html

    展开全文
  •  事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件,等等。 事件对象: 事件...

    事件:

         事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件,等等。

    事件对象:

    事件对象和 互斥对象,一样都属于 内核对象,它包含:(1)一个使用计数,(2)一个用于标识该事件是一个自动重置还是一个人工重置的布尔值,(3)另一个用于指定该事件处于已通知状态还是未通知状态的布尔值。

    由上面所述,可见事件对象可分为两种,一种是人工重置的,另一种是自动重置的。当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程。而当一个自动事件得到通知时,等待该事件的所有线程中只有一个线程变为可调度线程。

    CreateEvent:

    CreateEvent是一个WindowsAPI函数。它用来创建或打开一个命名的或无名的事件对像。如果想为对象指定一个访问掩码,应当使用CreateEventEx函数。

    HANDLECreateEvent(

    LPSECURITY_ATTRIBUTESlpEventAttributes,// 安全属性,一个指向SECURITY_ATTRIBUTES结构的指针,确定返回的句柄是否可 被子进程继承。如果lpEventAttributes是NULL,此句柄不能被继承。

    BOOLbManualReset,// 复位方式,指定将事件对象创建成手动复原还是自动复原。如果是TRUE,那么必须用ResetEvent函数来手 工将事件的状态复原到无信号状态。如果设置为FALSE,当一个等待线程被释放以后,系统将会自动将事 件状态复原为无信号状态。

    BOOLbInitialState,// 初始状态。指定事件对象的初始状态。如果为TRUE,初始状态为有信号状态;否则为无信号状态。

    LPCTSTRlpName // 对象名称,指定事件的对象的名称,是一个以0结束的字符串指针。名称的字符格式限定在MAX_PATH之内。名 字是对大小写敏感的。

    );

    如果函数调用成功,函数返回事件对象的句柄。如果对于命名的对象,在函数调用前已经被创建,函数将返回存在的事件对象的句柄,而且在GetLastError函数中返回ERROR_ALREADY_EXISTS。

    如果函数失败,函数返回值为NULL,如果需要获得详细的错误信息,需要调用GetLastError。

    指定事件的对象的名称,是一个以0结束的字符串指针。名称的字符格式限定在MAX_PATH之内。名字是对大小写敏感的。

    如果lpName指定的名字,与一个存在的命名的事件对象的名称相同,函数将请求EVENT_ALL_ACCESS来访问存在的对象。这时候,由于bManualReset和bInitialState参数已经在创建事件的进程中设置,这两个参数将被忽略。如果lpEventAttributes是参数不是NULL,它将确定此句柄是否可以被继承,但是其安全描述符成员将被忽略。

    如果lpName为NULL,将创建一个无名的事件对象。

    如果lpName的和一个存在的信号、互斥、等待计时器、作业或者是文件映射对象名称相同,函数将会失败,在GetLastError函数中将返回ERROR_INVALID_HANDLE。造成这种现象的原因是这些对象共享同一个命名空间





    展开全文
  • Microsoft C# Windows程序设计(上下册)

    热门讨论 2011-08-05 10:28:13
    12.14 三状态复选框 12.15 标签控件 12.16 制表位tab键控制顺序 12.17 标识控件 12.18 自动缩放选项 12.18.1 windows forms desigler如何使用自动缩放? 12.18.2 富有创造性的autoscalebasesize设置...
  • 实例256 制作带复选框的ListView控件 11.7 选择类控件应用 实例257 利用选择控件实现权限设置 实例258 利用选择控件实现复杂查询 11.8 TreeView控件应用 实例259 在TreeView控件节点中显示图片 实例260 实现...
  • 实例256 制作带复选框的ListView控件 11.7 选择类控件应用 实例257 利用选择控件实现权限设置 实例258 利用选择控件实现复杂查询 11.8 TreeView控件应用 实例259 在TreeView控件节点中显示图片 实例260 实现...
  • 实例256 制作带复选框的ListView控件 11.7 选择类控件应用 实例257 利用选择控件实现权限设置 实例258 利用选择控件实现复杂查询 11.8 TreeView控件应用 实例259 在TreeView控件节点中显示图片 实例260 实现...
  • 主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体继承窗体、Windows常用控件的使用、...
  • 53.7单选按钮( Radio Button)和复选框( CheckBox) 104 538图片框( Pictruebo×)..105 54用 Message Box类显示消息窗口 541消息框的显示……106 5.4.2消息框的返回值 107 综合案例:职员信息管理. 109 仟务实训部分...
  • 实例338 使树视图控件具有复选功能 实例339 树控件的服装设计 实例340 显示磁盘目录 7.11 标签控件 实例341 界面的分页显示 实例342 标签中的图标设置 7.12 时间控件 实例343 迷你星座查询器 实例344 设置...
  • 实例338 使树视图控件具有复选功能 实例339 树控件的服装设计 实例340 显示磁盘目录 7.11 标签控件 实例341 界面的分页显示 实例342 标签中的图标设置 7.12 时间控件 实例343 迷你星座查询器 实例344 设置...
  • flash shiti

    2014-03-14 10:32:41
    AB正确 27.以下不是符号Symbol可的类型的是: A. Moeie Clip B. Button C. Effect D. Graphic 28.Flash查看(View)菜单中,Go To→Next表示? A. 打开当前作品的第一个场景 B. 打开当前作品的上一个...
  • Visual C++ 2008入门经典--详细书签版

    热门讨论 2013-02-02 16:07:15
     ◆ 创建使用常用控件构建应用程序的图形用户界面  ◆ 使用mfc开发库  ◆ 访问数据源的不同控件控件的工作方式以及定制控件的方法  本书读者对象  本书适用于想学习如何为windows操作系统编写c++程序的初学...
  •  ◆ 创建使用常用控件构建应用程序的图形用户界面  ◆ 使用mfc开发库  ◆ 访问数据源的不同控件控件的工作方式以及定制控件的方法  本书读者对象  本书适用于想学习如何为windows操作系统编写c++程序的初学...
  •  李文娟,中国石油大学(华东)硕士,现供职于国家行政学院,工作后一直从事软件开发软件项目管理工作,对计算机语言、计算机体系结构、操作系统非常熟悉,尤其是精通CC++编 程技术. 目录 封面 -19 封底 -18 ...
  •  李文娟,中国石油大学(华东)硕士,现供职于国家行政学院,工作后一直从事软件开发软件项目管理工作,对计算机语言、计算机体系结构、操作系统非常熟悉,尤其是精通CC++编程技术. 目录 封面 -19 封底 -18 扉页...
  • 易语言 茶凉专用模块

    2010-05-04 12:26:36
    参数 临时透明色, 整数型, 可空, (#颜色)指定某颜色为完全透明(完全透明处不属于该窗口) 可空为不指定 .参数 鼠标穿透, 逻辑型, 可空, 可空为假 真:窗口被鼠标穿透 .子程序 窗口图标隐藏, , 公开, 将窗口的图标清除...

空空如也

空空如也

1 2
收藏数 23
精华内容 9
关键字:

复选框和单选框都属于控件