在VC++编程过程中,查资料是一个苦差事,案边放了一摞书左翻右翻好是烦人。一赌气就把一些常用的小技巧自己总结了一下,虽费了些功夫,但对以后编程很有好处。现拿出来与大家共享,以后积累多了,作一个CHM电子书,用的时候翻阅实在很方便。
注:有些内容来源于网上文章,名字我都没记下来,这里向作者致谢了!

VC学习笔记1:按钮的使能与禁止

用ClassWizard的Member Variables为按钮定义变量,如:m_Button1;

m_Button1.EnableWindow(true); 使按钮处于允许状态
m_Button1.EnableWindow(false); 使按钮被禁止,并变灰显示

VC学习笔记2:控件的隐藏与显示

用CWnd类的函数BOOL ShowWindow(int nCmdShow)可以隐藏或显示一个控件。

例1:
CWnd *pWnd;
pWnd = GetDlgItem( IDC_EDIT1 );    //获取控件指针,IDC_EDIT为控件ID号
pWnd->ShowWindow( SW_HIDE );    //隐藏控件

例2:
CWnd *pWnd;
pWnd = GetDlgItem( IDC_EDIT1 );    //获取控件指针,IDC_EDIT为控件ID号
pWnd->ShowWindow( SW_SHOW );    //显示控件

以上方法常用于动态生成控件,虽说用控件的Create函数可以动态生成控件,但这种控件很不好控制,所以用隐藏、显示方法不失为一种替代手段。

VC学习笔记3:改变控件的大小和位置

用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置。

void MoveWindow(int x,int y,int nWidth,int nHeight);
void MoveWindow(LPCRECT lpRect);
第一种用法需给出控件新的坐标和宽度、高度;
第二种用法给出存放位置的CRect对象;
例:
CWnd *pWnd;
pWnd = GetDlgItem( IDC_EDIT1 );    //获取控件指针,IDC_EDIT1为控件ID号
pWnd->MoveWindow( CRect(0,0,100,100) );    //在窗口左上角显示一个宽100、高100的编辑控件

SetWindowPos()函数使用更灵活,多用于只修改控件位置而大小不变或只修改大小而位置不变的情况:
BOOL SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);
第一个参数我不会用,一般设为NULL;
x、y控件位置;cx、cy控件宽度和高度;
nFlags常用取值:
SWP_NOZORDER:忽略第一个参数;
SWP_NOMOVE:忽略x、y,维持位置不变;
SWP_NOSIZE:忽略cx、cy,维持大小不变;
例:
CWnd *pWnd;
pWnd = GetDlgItem( IDC_BUTTON1 );    //获取控件指针,IDC_BUTTON1为控件ID号
pWnd->SetWindowPos( NULL,50,80,0,0,SWP_NOZORDER | SWP_NOSIZE );    //把按钮移到窗口的(50,80)处
pWnd = GetDlgItem( IDC_EDIT1 );
pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER | SWP_NOMOVE );    //把编辑控件的大小设为(100,80),位置不变
pWnd = GetDlgItem( IDC_EDIT1 );
pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER );    //编辑控件的大小和位置都改变
以上方法也适用于各种窗口。

VC学习笔记4:什么时候设定视中控件的初始尺寸?

我在CFormView的视中加入了一个编辑控件,在运行时使它充满客户区,当窗口改变大小时它也跟着改变。
改变控件尺寸可以放在OnDraw()函数中,也可放在CalcWindowRect()函数中,当窗口尺寸发生变化时,它们都将被执行,且CalcWindowRect()函数先于OnDraw()函数,下例是在CalcWindowRect()函数中修改控件尺寸。
重载VIEW类的CalcWindowRect函数,把设定控件的尺寸的语句加入这个函数中。
例:
void CMyEditView::CalcWindowRect(LPRECT lpClientRect, UINT nAdjustType) 
{
    // TODO: Add your specialized code here and/or call the base class

CFrameWnd *pFrameWnd=GetParentFrame(); //获取框架窗口指针

CRect rect;
    pFrameWnd->GetClientRect(&rect); //获取客户区尺寸

CWnd *pEditWnd=GetDlgItem(IDC_MYEDIT); //获取编辑控件指针,IDC_MYEDIT为控件ID号
    pEditWnd->SetWindowPos(NULL,0,0,rect.right,rect.bottom-50,SWP_NOMOVE | SWP_NOZORDER); //设定控件尺寸,bottom-50是为了让出状态条位置。

CFormView::CalcWindowRect(lpClientRect, nAdjustType);
}

VC学习笔记5:单选按钮控件(Ridio Button)的使用

一、对单选按钮进行分组:
每组的第一个单选按钮设置属性:Group,Tabstop,Auto;其余按钮设置属性Tabstop,Auto。

如:
Ridio1、Ridio2、Ridio3为一组,Ridio4、Ridio5为一组

设定Ridio1属性:Group,Tabstop,Auto
设定Ridio2属性:Tabstop,Auto
设定Ridio3属性:Tabstop,Auto

设定Ridio4属性:Group,Tabstop,Auto
设定Ridio5属性:Tabstop,Auto

二、用ClassWizard为单选控件定义变量,每组只能定义一个。如:m_Ridio1、m_Ridio4。

三、用ClassWizard生成各单选按钮的单击消息函数,并加入内容:

void CWEditView::OnRadio1() 
{
    m_Ridio1 = 0;    //第一个单选按钮被选中
}

void CWEditView::OnRadio2() 
{
    m_Ridio1 = 1;    //第二个单选按钮被选中
}

void CWEditView::OnRadio3() 
{
    m_Ridio1 = 2;    //第三个单选按钮被选中
}

void CWEditView::OnRadio4() 
{
    m_Ridio4 = 0;    //第四个单选按钮被选中
}

void CWEditView::OnRadio5() 
{
    m_Ridio4 = 1;    //第五个单选按钮被选中
}

四、设置默认按钮:
在定义控件变量时,ClassWizard在构造函数中会把变量初值设为-1,只需把它改为其它值即可。
如:
//{{AFX_DATA_INIT(CWEditView)
m_Ridio1 = 0;    //初始时第一个单选按钮被选中
m_Ridio4 = 0;    //初始时第四个单选按钮被选中
//}}AFX_DATA_INIT

VC学习笔记6:旋转控件(Spin)的使用

当单击旋转控件上的按钮时,相应的编辑控件值会增大或减小。其设置的一般步骤为:
一、在对话框中放入一个Spin控件和一个编辑控件作为Spin控件的伙伴窗口,
设置Spin控件属性:Auto buddy、Set buddy integer、Arrow keys
设置文本控件属性:Number

二、用ClassWizard为Spin控件定义变量m_Spin,为编辑控件定义变量m_Edit,定义时注意要把m_Edit设置为int型。

三、在对话框的OnInitDialog()函数中加入语句:
BOOL CMyDlg::OnInitDialog() 
{
    CDialog::OnInitDialog();
    
    m_Spin.SetBuddy( GetDlgItem( IDC_EDIT1 ) );    //设置编辑控件为Spin控件的伙伴窗口
    m_Spin.SetRange( 0, 10 );    //设置数据范围为0-10
    return TRUE;
}

四、用ClassWizard为编辑控件添加EN_CHANGE消息处理函数,再加入语句:
void CMyDlg::OnChangeEdit1() 
{
    m_Edit = m_Spin.GetPos();    //获取Spin控件当前值
}

OK!

VC学习笔记7:程序结束时保存文件问题

在文档-视图结构中,用串行化自动保存文件在各种VC书上都有介绍。现在的问题是我不使用串行化,而是自己动手保存,当点击窗口的关闭按钮时,如何提示并保存文档。

用ClassWizard在文档类(CxxDoc)中添加函数CanCloseFrame(),再在其中加入保存文件的语句就可以了。
注:要保存的数据应放在文档类(CxxDoc)或应用程序类(CxxApp)中,不要放在视图类中。

例:
//退出程序
BOOL CEditDoc::CanCloseFrame(CFrameWnd* pFrame) 
{
    CFile file;
    if(b_Flag)    //b_Flag为文档修改标志,在修改文档时将其置为True
    {
        int t;
        t=::MessageBox(NULL,"文字已经改变,要存盘吗?","警告",
                MB_YESNOCANCEL | MB_ICONWARNING);    //弹出提示对话框
        if(t==0 || t==IDCANCEL)
            return false;
        if(t==IDYES)
        {
            CString sFilter="Text File(*.txt)|*.txt||";
            CFileDialog m_Dlg(FALSE,"txt",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,(LPCTSTR)sFilter,NULL);    //定制文件对话框

int k=m_Dlg.DoModal();    //弹出文件对话框
            if(k==IDCANCEL || k==0)
                return false;
            m_PathName=m_Dlg.GetPathName();    //获取选择的文件路径名
            
            file.Open(m_PathName,CFile::modeCreate | CFile::modeWrite);
            file.Write(m_Text,m_TextLen);    //数据写入文件
            file.Close();
        }
    }
    return CDocument::CanCloseFrame(pFrame);
}

VC学习笔记8:UpdateData()

对于可以接收数据的控件,如编辑控件来说,UpdateData()函数至关重要。当控件内容发生变化时,对应的控件变量的值并没有跟着变化,同样,当控件变量值变化时,控件内容也不会跟着变。
UpdateData()函数就是解决这个问题的。

UpdateData(true);把控件内容装入控件变量
UpdateData(false);用控件变量的值更新控件

如:有编辑控件IDC_EDIT1,对应的变量为字符串m_Edit1,
1、修改变量值并显示在控件中:
m_Edit1 = _T("结果为50");
UpdateData(false);
2、读取控件的值到变量中:
用ClassWizard为IDC_EDIT1添加EN_CHANGE消息处理函数,
void CEditView::OnChangeEdit1()
{
    UpdateData(true);
}

VC学习笔记 -单选按钮控件(Ridio Button)的使用相关推荐

  1. android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例

    有时候,可能觉得系统提供的控件太丑,就会需要自定义控件来实现自己想要的效果. 以下主要参考<第一行代码> 1.自定义一个标题栏: 系统自带的标题栏很丑,且没什么大的作用,所以我们之前会在o ...

  2. Asp.net控件开发学习笔记(三)-控件开发基础

    封装      在asp.net中,控件被分为两类.用户控件和自定义服务器控件.前者就是我们经常用来将一些可复用的内容封装成的.ascx文件.这里主要研究后者. 创建自定义服务器控件      创建自 ...

  3. IOS开发学习笔记018- 一般控件的使用

    1.移动 2.动画 3.缩放 3.旋转 4.简化代码 5.总结 UIButton 的两种状态 normal highlighted  1.移动 OC语法规定:不允许直接修改某个对象中结构体属性的成员. ...

  4. PR学习笔记——效果控件的相关知识

    效果控件 1.一般调节音量 2.左右鼠标一起点击或者alt+鼠标左键 3.钢笔工具是增添关键帧的 4.alt+ctrl 换视频的位置

  5. C#学习笔记:控件BackColor属性与ForeColor的使用方法

    1.解释 (1)BackColor属性 BackColor属性表示控件的背景颜色,各个颜色颜色分量的取值范围是0-255的整数. (2)ForeColor属性 ForeColor属性表示控件的前景色, ...

  6. C#学习笔记:控件的Dock属性使用,工具栏遮挡解决。

    #Dock属性说明 该属性的用途类似于JAVA中的边框布局.绑定区域类似于东西南北中. Top:顶部,将控件绑定到窗体或页面的顶部,控件跟随顶部移动,一般ToolStrip就是这样的模式 Bottom ...

  7. PyQt5学习笔记- PyQt5控件介绍

    PyQt5控件介绍 一.控件的概念 二.控件结构继承图 一.控件的概念 一个程序界面上的各个独立的元素(一块矩形区域) 具备不同的功能:用户点击.接受用户输入.展示内容.存放其他控件 初始常用控件:按 ...

  8. python Tkinter学习笔记 menu控件 02

    2019独角兽企业重金招聘Python工程师标准>>> ''' Created on 2012-9-19@author: liangqianwu''' #_*_ coding:utf ...

  9. ajax获取单选按钮的值_【自学C#】|| 笔记 31 控件,按钮

    一.Button:按钮控件 按钮主要用于提交页面的内容,或者是确认某种操作等.     按钮常用的属性包括在按钮中显示的文字 (Text) 以及按钮外观设置的属性,最常用的事件是单击事件. 1.例: ...

最新文章

  1. Android开发笔记之:Handler Runnable与Thread的区别详解
  2. MFC中的几个常用类——CWnd
  3. 史上最详细Docker安装Redis (含每一步的图解)实战
  4. php判断目录是否有写的权限,php中判断文件空目录是否有读写权限的函数代码_php技巧...
  5. Android全工程编译不过问题汇总
  6. 【Flink】Flink常量UDF-TableFunction优化
  7. 学python还有机会吗_此时此刻,拥有一套全方面学习Python的机会是怎样一种体验?...
  8. 初中向局里申请计算机报告,物资申请报告格式
  9. 机顶盒天线接头怎么接_数字电视接收天线怎么安装
  10. 异常通知辅助模块 5.3 (try/catch)
  11. python毕业论文参考文献格式_毕业论文参考文献规范格式
  12. Tasking编译器开发TC275(Tricore)中使用自定义段
  13. 影子卫士中文注册版+系统保护的尚方宝剑、、
  14. mumu模拟器切换android,MuMu模拟器“键位设置”功能详解!如有问题请联系在线客服~...
  15. CodeForces - 999C Alphabetic Removals
  16. 【C++】跟着老九君学习记录(一)
  17. C++ UTF8 互转 Unicode
  18. 关系数据库范式及1NF、2NF、3NF和BCNF
  19. 英语口语196之每日十句口语
  20. 计算机开始按钮的功能,Windows7系统开始菜单有哪些新增的功能

热门文章

  1. TensorFlow Wide And Deep 模型详解与应用
  2. MySQL连不上,报Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
  3. 遇到的一些小的tips
  4. Intellij IDEA2019项目包分层结构显示设置
  5. python3编译器怎么下载_Python编译器及Sublime Text3安装及开发环境配置
  6. 如何把配置文件集成到.exe中_VSCode如何使用cmder
  7. python读取word文件并替换部分文字_python实现替换word中的关键文字(使用通配符)...
  8. vue在js上处理后台返回的数组_vuejs 根据后台返回数组,渲染图片路径
  9. 成功解决ValueError: setting an array element with a sequence.
  10. ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略