VC++ 自定義控件的建立及使用方法
一、VC++定義自定義控件與delphi,VB有些差異。
delphi,vb在 file-new-other中建立。vc++在工具欄中就有自定義控件,但必須加入控件類型。
許多書籍都在類向?qū)е薪ⅰN疫@里介紹的是手動建立,其結(jié)果是一樣的。
二.建立過自定義控件類型:
   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中的實現(xiàn)部分
#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.在類向?qū)е薪壎ㄗ远x控件時你是找不到剛才你定義的類型的,所以我采用手動加入代碼方法。
    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++自定義控件就全部介紹完畢,你可以在類型中加入你要實現(xiàn)的方法。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
上一篇:C++中Cbitmap,HBitmap,Bitmap區(qū)別及聯(lián)系
欄 目:C語言
下一篇:c++學(xué)習(xí)之構(gòu)造函數(shù)
本文標(biāo)題:VC++ 自定義控件的建立及使用方法
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3028.html
您可能感興趣的文章
- 01-10VC對自定義資源加密解密(AES)的詳解
 - 01-10淺析c#中如何在form的webbrowser控件中獲得鼠標(biāo)坐標(biāo)
 - 01-10淺析c#中WebBrowser控件的使用方法
 - 01-10c++ builder TreeView控件節(jié)點遍歷代碼
 - 01-10VC中Tab control控件的用法詳細(xì)解析
 - 01-10VC++中的字體設(shè)置方法詳解
 - 01-10淺析VC++中的頭文件包含問題
 - 01-10VC++開發(fā)中完美解決頭文件相互包含問題的方法解析
 - 01-10map插入自定義對象總結(jié)
 - 01-10vc++實現(xiàn)的tcp socket客戶端和服務(wù)端示例
 


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
 - 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
 - 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
 - 04-02c語言用函數(shù)寫分段 用c語言表示分段
 - 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
 - 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
 - 04-02c語言沒有round函數(shù) round c語言
 - 04-02c語言分段函數(shù)怎么求 用c語言求分段
 - 04-02C語言中怎么打出三角函數(shù) c語言中怎
 - 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
 
隨機閱讀
- 04-02jquery與jsp,用jquery
 - 01-10C#中split用法實例總結(jié)
 - 01-10delphi制作wav文件的方法
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 01-11ajax實現(xiàn)頁面的局部加載
 - 08-05織夢dedecms什么時候用欄目交叉功能?
 - 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 


