VC++ 自定义控件的建立及使用方法
一、VC++定义自定义控件与delphi,VB有些差异。
delphi,vb在 file-new-other中建立。vc++在工具栏中就有自定义控件,但必须加入控件类型。
许多书籍都在类向导中建立。我这里介绍的是手动建立,其结果是一样的。
二.建立过自定义控件类型:
2.1、把工具栏上的自定义控件放入对话框中
2.2、建立Mycontrol.h, Mycontrol.cpp文件
2.3、Mycontrol.h中的定义是
#ifndef __MYCTROLTRL_H__
#define __MYCTROLTRL_H__
#define MYWNDCLASS "mycontrol"
#include <afxtempl.h>
class CMycontrol: public CWnd
{
private:
public:
static BOOL RegisterWndClass();
CMycontrol();
void customfun();//一个自定义方法
};
#endif
2.4 Mycontrol.cpp中的实现部分
#include "StdAfx.h"
#include "mycontrol.h"
CMycontrol::CMycontrol()
{
CMycontrol::RegisterWndClass();
}
//注册控件RegisterWndClass格式是固定的不要记忆没有那个必要直接拷贝粘贴就可以。
CMycontrol::RegisterWndClass()
{
WNDCLASS windowclass;
HINSTANCE hInst = AfxGetInstanceHandle();
//Check weather the class is registerd already
if (!(::GetClassInfo(hInst, MYWNDCLASS, &windowclass)))
{
//If not then we have to register the new class
windowclass.style = CS_DBLCLKS;// | CS_HREDRAW | CS_VREDRAW;
windowclass.lpfnWndProc = ::DefWindowProc;
windowclass.cbClsExtra = windowclass.cbWndExtra = 0;
windowclass.hInstance = hInst;
windowclass.hIcon = NULL;
windowclass.hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
windowclass.hbrBackground = ::GetSysColorBrush(COLOR_WINDOW);
windowclass.lpszMenuName = NULL;
windowclass.lpszClassName = MYWNDCLASS;
if (!AfxRegisterClass(&windowclass))
{
AfxThrowResourceException();
return FALSE;
}
}
return TRUE;
}
//自定义方法
void CMycontrol::customfun()
{
AfxMessageBox(_T("my control!"));
}
三、使用自定义控件
3.1.在类向导中绑定自定义控件时你是找不到刚才你定义的类型的,所以我采用手动加入代码方法。
3.2.在对话框.h文件中手动加入:public: CMycontrol m_mycontrol;
3.3.在对话框.cpp文件中手动加入:DDX_Control(pDX,IDC_CUSTOM1,m_mycontrol);
3.4.在对话框中加入Button 在点击事件中加入测试代码:
void CCustomcontrolDlg::OnButton1()
{
// TODO: Add your control notification handler code here
m_mycontrol.customfun();
}
四、编译运行vc++自定义控件的对话框窗体.编译成功但运行什么也不显示的解决
右键自定义控件->属性->类型中填写"mycontrol"再次允许OK!
到此VC++自定义控件就全部介绍完毕,你可以在类型中加入你要实现的方法。
VC++ 自定义控件的建立及使用方法的更多相关文章
- windows8建立局域网的方法
win8建立局域网的方法:1.首先笔记本有无线网卡且支持 虚拟WIFI ;2.按win+X键,选择"命令提示符(管理员)A"; 3.输入"netsh wlan set h ...
- VC++获取IDC_EDIT的7种方法
VC++获取IDC_EDIT的7种方法 http://blog.csdn.net/baizengfei/article/details/7997618 //第一种方法 int number1, num ...
- VC中调用COM组件的方法(转载)
原文参考:http://hi.baidu.com/mingyueye/item/53ebecd44da76917d80e4449 总结一下在VC中调用COM组件的方法 准备及条件: COM服务器为进程 ...
- VC++ 响应回车键的2种方法
众所周知,VC++响应回车键经常用的方法是利用 BOOL PreTranslateMessage(MSG* pMsg) 截取回车键消息,如: if (pMsg->message == WM_KE ...
- Eclipse中Android公共库的正确建立及调用方法
Eclipse中Android公共库的正确建立及调用方法 引言 之前一直头痛于没有办法在多个程序中共享资源,用作公共类库的方法也是使用的导出jar再导入的办法,现在终于初步搞明白了,可算解脱了~,分享 ...
- vc中调用Com组件的方法详解
vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口: IGetRes--方法Hello(), IGet ...
- mysql建立数据库的方法
mysql建立数据库的方法 方法一:使用create mysql> create database roudy; Query OK, 1 row affected (0.00 sec) mysq ...
- 【腾讯云的1001种玩法】几种在腾讯云建立WordPress的方法(Linux)(二)
版权声明:本文由张宁原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/126547001488207964 来源:腾云阁 ht ...
- win2008r2的iis7.5手动建站方法,iis7.5中用独立用户建立网站的方法,提高网站安全性
win2003的iis6手动建站方法,iis6中用独立用户建立网站的方法,提高网站安全性,我们前面的教程有说明,请看http://www.piis.cn/zhishi/web574.asp 现在我们说 ...
随机推荐
- 关于-RegExp
// exec() exec() 查找并返回当前的匹配结果,并以数组的形式返回. // test() test() 方法检索字符串中的指定值.返回值是 true 或 false. // compile ...
- C# DataGridView导出Excel
using Microsoft.Office.Interop.Excel; using Excel=Microsoft.Office.Interop.Excel; //这 ...
- ubuntu播放音频没声音
1. 安装pavucontrol sudo apt install pavucontrol 2.配置pavucontrol 在终端执行pavucontrol,弹出设置框进行如下设置:
- mongodb $用法,等
1.$修改器 : $set 简单粗暴 {name:value} dict["name"]=value $unset 简单粗暴的删除字段 {$unset:{name:1}} de ...
- linux下mysql-5.6忘记root密码,重置root密码详细过程
在linux平台下使用mysql过程中忘记了root密码,对于运维和DBA来讲都是一件头疼的事情,下面来讲解下怎么进行重置mysql数据库root 密码: 1.首先停止mysql服务进程: 1 s ...
- WPF DataGrid多表头/列头,多行头,合并单元格,一列占据多行
先上效果图: 思路说明:这是两个DataGrid,没有嵌套,位置和高度保持一致,在加上ScrollViewer滚动条,这就像是在一个DataGrid中. 缺点: 因为最外层有透明的Border,所以没 ...
- UiAutomator 代码记录: 随机创建新联系人
package lecturer; import java.lang.*; import java.nio.Buffer; import java.util.Random; import java.i ...
- [转]access 标准表达式中数据类型不匹配
好久没有用access,今儿遇到一个特别让人无语的问题: access数据表的Date/Time类型的字段,假如字段名为dtime: 如果直接用dtime=‘2013/9/6 10:50:21’,sq ...
- java BASE64流 输出图片。
亲测3个请求都可用,没有测试性能问题.仅供参考 BASE64Decoder Eclipsse 类可能引用不了解决方案链接:http://blog.csdn.net/JBxiaozi/article/d ...
- 【Servlet】监听器入门