1

Microsoft Foundation Class Library を使用して ActiveX コントロールを作成しようとしています。

コントロールを作成しました。グラフコントロールです。コントロールにもいくつかのボタンを配置しました。

CScrollBarクラスを使用してコントロールにスクロールバーを追加しようとしています。

CScrollBar::Createメソッドを使用してコントロールを作成します。アプリケーションで ActiveX コントロールを使用すると、コントロールが表示されます。

OnHScrollメソッドをコントロール クラスに追加しました。これは class から派生しCOleControlます。

CScrollBar::GetScrollPosスクロールするときは、常にゼロを返すスクロール位置を取得するために使用します。

以下は、activeX コントロールでスクロールバーを作成するためのコードです。

MainClass.h ファイルのコントロールのコード:

private:
CScrollBar m_HScrollBar;

protected:
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); 
DECLARE_MESSAGE_MAP()

スクロールバーを作成するメソッドのMainClass.cpp の Control のコードOnCreate():

m_HScrollBar.Create(SBS_HORZ | WS_CHILD| WS_VISIBLE , CRect(rcBottomStrip.left  ,
rcBottomStrip.bottom  ,
rcBottomStrip.right ,
rcBottomStrip.bottom  + (tHeight*3)/125),this, 315);

m_HScrollBar.SetScrollRange(0, 2048);

SCROLLINFO ScrollInfo;
ScrollInfo.cbSize = sizeof(ScrollInfo);
ScrollInfo.fMask = SIF_RANGE;        
ScrollInfo.nMin = 0;                
ScrollInfo.nMax = 1128;              
ScrollInfo.nPage = 100;              
ScrollInfo.nPos = 0;                
ScrollInfo.nTrackPos = 0;          
m_HScrollBar.SetScrollInfo(&ScrollInfo);
m_HScrollBar.ShowScrollBar(TRUE);
m_HScrollBar.EnableWindow();
m_HScrollBar.EnableAutomation();

スクロール位置を返し、OnHScrollスクロールバーを移動する方法:

int CurPos = m_HScrollBar.GetScrollPos();
m_HScrollBar.SetScrollPos(CurPos);
4

1 に答える 1

0

CScrollBar を置き換え、代わりに HWND を使用しました。したがって、私のコードは次のように変更されました。

//MainClass.h

HWND m_wndHScrollBar;

//MainClass.cpp

m_wndHScrollBar = (CreateWindowEx( 
                    0,                      // no extended styles 
                    SCROLLBAR,           // scroll bar control class 
                    (PTSTR) NULL,           // no window text 
                    WS_CHILD | WS_VISIBLE   // window styles  
                        | SBS_HORZ,         // horizontal scroll bar style 
                    left,              // horizontal position 
                    bottom, // vertical position 
                    right,             // width of the scroll bar 
                    height,               // height of the scroll bar
                    m_hWnd,             // handle to main window 
                    (HMENU) ID_HSCROLLBAR,           // no menu 
                    GetModuleHandle(NULL),                // instance owning this window 
                    (PVOID) NULL            // pointer not needed 
                )); 
于 2013-10-22T11:22:49.267 に答える