ActiveX/컨트롤설정비교
ActiveX/컨트롤설정비교

VC++ .NET / MFC ActiveX 컨트롤 프로젝트 생성시
컨트롤 설정
추가기능
표시되었을 때 활성화깜빡임 없는 활성화
런타임에 숨김체 삽입 대화 상자에서 사용 가능
대화 상자 포함비활성화 상태일 때 마우스 포인터 알림
그리기 코드 최적화단순 프레임 컨트롤로 사용
창 없는 활성화비동기적 속성 로드
잘리지 않는 디바이스 컨텍스트



※ 1. 비교대상 : 아무것도 선택안했을때
  2. OLEMISC를 참고하세요.

  • 아무것도 선택안했을때

    static const DWORD BASED_CODE _dwxTest_nothingOleMisc =
            OLEMISC_SETCLIENTSITEFIRST |
            OLEMISC_INSIDEOUT |
            OLEMISC_CANTLINKINSIDE |
            OLEMISC_RECOMPOSEONRESIZE;

    BOOL CxTest_nothingCtrl::CxTest_nothingCtrlFactory::UpdateRegistry(BOOL bRegister)
    {
            // TODO: 컨~J롤~] ~U~D~L~L~J 모~M ~J| ~H~T ~\~Y~]~D ~@~H~X~U~X~J~T~@
            // ~Y~U~]~U~K~H~K. ~^~P~D~U~\ ~B~Z~]~@ MFC Technical Note 64를
            // 참조~U~X~K~K~\~X. 컨~J롤~] ~U~D~L~L~J 모~M ~\~Y~W~P
            // ~^~@ ~U~J~J~T 경~Z ~K~]~L~W~P~D~\ ~W~D ~H째 매~\ ~@~H~X를 ~@경~U~K~H~K.
            // afxRegApartmentThreading~]~D 0~\~\ ~D| ~U~U~K~H~K.

            if (bRegister)
                    return AfxOleRegisterControlClass(
                            AfxGetInstanceHandle(),
                            m_clsid,
                            m_lpszProgID,
                            IDS_XTEST_NOTHING,
                            IDB_XTEST_NOTHING,
                            afxRegApartmentThreading,
                            _dwxTest_nothingOleMisc,
                            _tlid,
                            _wVerMajor,
                            _wVerMinor);
            else
                    return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
    }

    // CxTest_nothingCtrl::OnDraw - 그리기 ~U~H~X~^~E~K~H~K.

    void CxTest_nothingCtrl::OnDraw(
                            CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
    {
            if (!pdc)
                    return;

            // TODO: ~K~]~L ~T~S~\를 ~B~Z~^~P~@ ~A| ~Q ~^~Q~D~U~\ 그리기 ~T~S~\~\ ~T꾸~K~K~\~X.
            pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
            pdc->Ellipse(rcBounds);
    }

  • 기본
    표시되었을 때 활성화 / 대화 상자 포함

    static const DWORD BASED_CODE _dwxdeOleMisc =
            OLEMISC_ACTIVATEWHENVISIBLE |   //~T~@
            OLEMISC_SETCLIENTSITEFIRST |
            OLEMISC_INSIDEOUT |
            OLEMISC_CANTLINKINSIDE |
            OLEMISC_RECOMPOSEONRESIZE;
    • OLEMISC_ACTIVATEWHENVISIBLE
    • AboutBox()

      // CxdeCtrl::AboutBox - "| ~U보" ~L~@~Y~T ~C~A~^~P를 ~B~Z~^~P~W~P~L 보~W ~M~K~H~K.

      void CxdeCtrl::AboutBox()
      {
              CDialog dlgAbout(IDD_ABOUTBOX_XDE);
              dlgAbout.DoModal();
      }

1 표시되었을 때 활성화

static const DWORD BASED_CODE _dwx01OleMisc =
        OLEMISC_ACTIVATEWHENVISIBLE |   // ~T~@
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • OLEMISC_ACTIVATEWHENVISIBLE

2 깜빡임 없는 활성화

static const DWORD BASED_CODE _dwx02OleMisc =
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • GetControlFlags()

    // CxCtrl::GetControlFlags -
    // MFC~]~X ActiveX 컨~J롤 구~X~D~]~D ~B~Z~^~P ~@| ~U~U~X~J~T ~T~L~^~X그~^~E~K~H~K.
    //
    DWORD CxCtrl::GetControlFlags()
    {
            DWORD dwFlags = COleControl::GetControlFlags();


            // ~Y~\~D ~O ~D~Y~\~D ~C~A~C~\ ~B~]~W~P~D~\ | ~D~Y~X~U|  ~U~L~J~T
            // 컨~J롤~]~D ~K~K~\ 그릴 ~H~X ~W~F~J~K~H~K.
            dwFlags |= noFlickerActivate;
            return dwFlags;
    }

3 런타임에 숨김

static const DWORD BASED_CODE _dwx03OleMisc =
        OLEMISC_INVISIBLEATRUNTIME |    // ~T~@
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • OLEMISC_INVISIBLEATRUNTIME

4 체 삽입 대화 상자에서 사용 가능

static const DWORD BASED_CODE _dwx04OleMisc =
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • UpdateRegistry()

    BOOL Cx04Ctrl::Cx04CtrlFactory::UpdateRegistry(BOOL bRegister)
    {
            // TODO: 컨~J롤~] ~U~D~L~L~J 모~M ~J| ~H~T ~\~Y~]~D ~@~H~X~U~X~J~T~@
            // ~Y~U~]~U~K~H~K. ~^~P~D~U~\ ~B~Z~]~@ MFC Technical Note 64를
            // 참조~U~X~K~K~\~X. 컨~J롤~] ~U~D~L~L~J 모~M ~\~Y~W~P
            // ~^~@ ~U~J~J~T 경~Z ~K~]~L~W~P~D~\ ~W~D ~H째 매~\ ~@~H~X를 ~@경~U~K~H~K.
            // **** ~@경~P~\ ~@~D ~K~\~^~Q
            // afxRegInsertable | afxRegApartmentThreading~W~P~D~\ afxRegInsertable~\ ~@경~U~K~H~K.
            // **** ~@경~P~\ ~@~D ~A~]

            if (bRegister)
                    return AfxOleRegisterControlClass(
                            AfxGetInstanceHandle(),
                            m_clsid,
                            m_lpszProgID,
                            IDS_X04,
                            IDB_X04,
                            // *** ~@경~P~\ ~@~D ~K~\~^~Q
                            afxRegInsertable | afxRegApartmentThreading,
                            // *** ~@경~P~\ ~@~D ~A~]
                            _dwx04OleMisc,
                            _tlid,
                            _wVerMajor,
                            _wVerMinor);
            else
                    return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
    }

5 대화 상자 포함

static const DWORD BASED_CODE _dwx05OleMisc =
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • AboutBox()

    // Cx05Ctrl::AboutBox - "| ~U보" ~L~@~Y~T ~C~A~^~P를 ~B~Z~^~P~W~P~L 보~W ~M~K~H~K.

    void Cx05Ctrl::AboutBox()
    {
            CDialog dlgAbout(IDD_ABOUTBOX_X05);
            dlgAbout.DoModal();
    }

6 비활성화 상태일 때 마우스 포인터 알림

static const DWORD BASED_CODE _dwx06OleMisc =
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • GetControlFlags()

    // Cx06Ctrl::GetControlFlags -
    // MFC~]~X ActiveX 컨~J롤 구~X~D~]~D ~B~Z~^~P ~@| ~U~U~X~J~T ~T~L~^~X그~^~E~K~H~K.
    //
    DWORD Cx06Ctrl::GetControlFlags()
    {
            DWORD dwFlags = COleControl::GetControlFlags();


            // 컨~J롤~]~@ ~D~Y~\~D ~C~A~C~\~] ~U~L ~H~Z~J ~U~L림~]~D ~[~]~D ~H~X ~^~H~J~K~H~K.
            // TODO: WM_SETCURSOR ~O WM_MOUSEMOVE~]~X ~X리기를 ~^~Q~D~U|  ~U~L~J~T
            //              멤~D ~@~H~X m_hWnd~]~X ~R~] NULL~] ~U~D~K~X~]~D
            //              먼| ~@ ~Y~U~]~U~\ ~[~D~W~P ~B~Z~U~K~H~K.
            dwFlags |= pointerInactive;
            return dwFlags;
    }

7 그리기 코드 최적화

static const DWORD BASED_CODE _dwx07OleMisc =
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • OnDraw()

    // Cx07Ctrl::OnDraw - 그리기 ~U~H~X~^~E~K~H~K.

    void Cx07Ctrl::OnDraw(
                            CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
    {
            if (!pdc)
                    return;

            // TODO: ~K~]~L ~T~S~\를 ~B~Z~^~P~@ ~A| ~Q ~^~Q~D~U~\ 그리기 ~T~S~\~\ ~T꾸~K~K~\~X.
            pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
            pdc->Ellipse(rcBounds);

            // ~T~@~P~\ ~@~D ~K~\~^~Q
            if (!IsOptimizedDraw())
            {
                    // 컨~E~L~]~D~H~W~P~D~\ ~\| ~A~Y~T~P~\ 그리기를 ~@~[~P~U~X~@ ~U~J~J~K~H~K.

                    // TODO: GDI ~\체를 ~T~T~T~]~J 컨~E~M~J~J *pdc~W~P ~D| ~C~]~U ~D~]~@ 경~Z
                    //미리 ~D| ~C~]~U~\ ~\체를 ~W기~W~P~D~\ 복구~U~K~H~K.
            }
            // ~T~@~P~\ ~@~D ~A~]
    }
  • GetControlFlags

    // Cx07Ctrl::GetControlFlags -
    // MFC~]~X ActiveX 컨~J롤 구~X~D~]~D ~B~Z~^~P ~@| ~U~U~X~J~T ~T~L~^~X그~^~E~K~H~K.
    //
    DWORD Cx07Ctrl::GetControlFlags()
    {
            DWORD dwFlags = COleControl::GetControlFlags();


            // 컨~J롤~]~@ ~T~T~T~]~J 컨~E~M~J~J~W~P ~^~H~J~T ~[~P본 GDI ~\체를 복구~U~X~@ ~U~J~J~T 방~U~]~D ~F~U
            // OnDraw ~T~D~\~S~\를 ~\| ~A~Y~T~U|  ~H~X ~^~H~J~K~H~K.
            dwFlags |= canOptimizeDraw;
            return dwFlags;
    }

8 단순 프레임 컨트롤로 사용

static const DWORD BASED_CODE _dwx08OleMisc =
        OLEMISC_SIMPLEFRAME |           // ~T~@
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • Cx08Ctrl() , 생성자

    // Cx08Ctrl::Cx08Ctrl - ~C~]~D~^~P~^~E~K~H~K.

    Cx08Ctrl::Cx08Ctrl()
    {
            InitializeIIDs(&IID_Dx08, &IID_Dx08Events);
            // ~T~@~P~\ ~@~D ~K~\~^~Q
            EnableSimpleFrame();
            // ~T~@~P~\ ~@~D ~A~]
            // TODO: ~W기~W~P~D~\ 컨~J롤~]~X ~]~J~D~J ~M~]~D를 ~H기~Y~T~U~K~H~K.
    }

9 창 없는 활성화

static const DWORD BASED_CODE _dwx09OleMisc =
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • GetControlFlags

    // Cx09Ctrl::GetControlFlags -
    // MFC~]~X ActiveX 컨~J롤 구~X~D~]~D ~B~Z~^~P ~@| ~U~U~X~J~T ~T~L~^~X그~^~E~K~H~K.
    //
    DWORD Cx09Ctrl::GetControlFlags()
    {
            DWORD dwFlags = COleControl::GetControlFlags();


            // 컨~J롤~]~@ 창~]~D ~L~S~@ ~U~J| ~O~D ~Y~\~D~Y~T~U|  ~H~X ~^~H~J~K~H~K.
            // TODO: ~U~K 컨~J롤~]~X ~T~K~\~@ ~X리기를 ~^~Q~D~U|  ~U~L~J~T
            //              멤~D ~@~H~X m_hWnd~]~X ~R~] NULL~] ~U~D~K~X~]~D
            //              먼| ~@ ~Y~U~]~U~\ ~[~D~W~P ~B~Z~U~K~H~K.
            dwFlags |= windowlessActivate;
            return dwFlags;
    }

10 비동기적 속성 로드

static const DWORD BASED_CODE _dwx10OleMisc =
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • Cx10Ctrl(), 생성자

    // Cx10Ctrl::Cx10Ctrl - ~C~]~D~^~P~^~E~K~H~K.

    Cx10Ctrl::Cx10Ctrl()
    {
            InitializeIIDs(&IID_Dx10, &IID_Dx10Events);
            // ~T~@~P~\~@~D ~K~\~^~Q
            m_lReadyState = READYSTATE_LOADING;
            // TODO: ~@~D ~C~A~C~\~@ ~@경~P~X면 InternalSetReadyState를 ~X~\~U~K~H~K.
            // ~T~@~P~\~@~D ~A~]
            // TODO: ~W기~W~P~D~\ 컨~J롤~]~X ~]~J~D~J ~M~]~D를 ~H기~Y~T~U~K~H~K.
    }

11 잘리지 않는 디바이스 컨텍스트

static const DWORD BASED_CODE _dwx11OleMisc =
        OLEMISC_SETCLIENTSITEFIRST |
        OLEMISC_INSIDEOUT |
        OLEMISC_CANTLINKINSIDE |
        OLEMISC_RECOMPOSEONRESIZE;
  • GetControlFlags

    // Cx11Ctrl::GetControlFlags -
    // MFC~]~X ActiveX 컨~J롤 구~X~D~]~D ~B~Z~^~P ~@| ~U~U~X~J~T ~T~L~^~X그~^~E~K~H~K.
    //
    DWORD Cx11Ctrl::GetControlFlags()
    {
            DWORD dwFlags = COleControl::GetControlFlags();

            // 컨~J롤~]~X ~\| ~] ~A리~U~Q~P~X~@ ~U~J~J~K~H~K.
            // 컨~J롤~]~@ ~A~]~]~V~J ~B~A~X~U~]~X
            // ~T깥쪽~W~P~J~T | ~U~X~@ ~U~J~J~K~H~K.
            dwFlags &= ~clipPaintDC;
            return dwFlags;
    }

ID
Password
Join





- 전 이런 놈입니다.

격언> 인생에서 가장 큰 공백은 아는 것과 행동하는 것 사이에 있다. (딕 빅스)

Recent Changes

D  Echoes Of War(The... @ 2012-05-18 [03:44 pm] by windlesszone
D  Diablo3 @ 2012-05-15 [04:49 pm] by windlesszone
D  Diablo3/story/wizard @ 2012-05-15 [04:48 pm] by windlesszone 4 changes
D  Diablo3/story/wit... @ 2012-05-15 [04:16 pm] by windlesszone
D  Diablo3/story/monk @ 2012-05-15 [04:14 pm] by windlesszone





Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-04-03 13:07:13
Processing time 0.1620 sec