VC++ 사용자 정의 컨트롤 구축 및 사용 방법

2821 단어
1. 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 
  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. 사용자 정의 컨트롤 사용
    3.1.클래스 마법사에서 사용자 정의 컨트롤을 연결할 때 방금 정의한 형식을 찾을 수 없기 때문에 수동으로 코드를 추가하는 방법을 사용합니다.    3.2.대화상자에서.h 파일에 수동으로 추가:public: CMycontrol mmycontrol;     3.3.대화상자에서.cpp 파일에 수동으로 추가:DDXControl(pDX,IDC_CUSTOM1,m_mycontrol);     3.4.대화 상자에 Button을 추가하고 클릭 이벤트에 테스트 코드를 추가합니다.

void CCustomcontrolDlg::OnButton1()
  {
 // TODO: Add your control notification handler code here
   m_mycontrol.customfun(); 
 }

4.vc++ 사용자 정의 컨트롤을 실행하는 대화상자 창을 컴파일합니다.컴파일에 성공했지만 아무것도 보이지 않는 해결
사용자 정의 컨트롤->속성->유형에 "mycontrol"을 입력하면 다시 OK!
이 VC++ 사용자 정의 컨트롤을 모두 소개합니다. 형식에 당신이 실현할 방법을 추가할 수 있습니다.
위에서 말한 것이 바로 본문의 전부이니 여러분들이 좋아해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기