Internet Explorer Pager Control | CodeGuru

Internet Explorer Pager Control

Environment: VC6 Hi, I was 14 years old when I wrote this control (almost when it came up to IE5.5) when I saw it for first time I said to myself: “I will make my own” because: I like it I haven’t been able to find it. That is the story of the control. How […]

Written By
CodeGuru Staff
CodeGuru Staff
Jan 16, 2002
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

Environment: VC6

Hi, I was 14 years old when I wrote this control (almost when it came up to IE5.5) when I saw it for first time I said to myself: “I will make my own” because:

  1. I like it
  2. I haven’t been able to find it.

That is the story of the control.

How to Use:

1. Projects->Add to Project->Files->SpawnFrameWnd.h/.cpp;IEPagerCtrl.h/.cpp;MenuSpawn.h/.cpp

2. MainFrm.h changes:

#include "IEPagerCtrl.h"
#include "SpawnFrameWnd.h"
----------------------------------------------------
//General message map functions
protected:
//AFX_MSG(CMainFrame)
//add this:
  afx_msg void OnArrow();
-----------------------------------------------------
  • Replace “CFrameWnd” with “CSpawnFrameWnd”
  • Replace “CToolBar m_wndToolBar” with “CIEPagerCtrl m_wndToolBar”

3. View->Resource Symbols->New->Name: ID_ARROW -> OK

4. MainFrm.cpp changes:

BEGIN _MESSAGE_MAP(........)
  ON_COMMAND(ID_ARROW, OnArrow)
  .
  .
  .
  .
  .

5. Replace “CFrameWnd” with “CSpawnFrameWnd”(everywhere, try with
replace action from the edit menu and replace all)

6. Add message handler to WM_SIZE, and add this code to the message.
Replace the OnSize with that:

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
  if ( nType == SIZE_MINIMIZED )
  {
     cx1 = cx;cy1 = cy;
  }
  else
  if ( nType == SIZE_RESTORED && cx1 != 0 && cy1 != 0)
  {
     m_wndToolBar.SetSize(cx1);
  }

  m_wndToolBar.SetSize(cx);
  Invalidate();
  CSpawnFrameWnd::OnSize(nType, cx, cy);
}

and then add that before it: “int cx1 = 0,cy1 = 0;” as global variables.

7. Add this source code to the MainFrm.cpp

void CMainFrame::OnArrow()
{
  HMENU lMenu;
  CPoint pPoint;
  lMenu = ::CreatePopupMenu();
  if ( lMenu != NULL )
  {
    BUTTONSINFO butInfo[100];
    int nButtons =
          m_wndToolBar.GetHiddenButtonsInfo ( butInfo );
    for ( int i = 0; i < nButtons; i++ )
    {
      if ( butInfo[i].nStyle == TBSTYLE_SEP &&
        i == 0 ) {}
      else
        ::AppendMenu(lMenu, MF_ENABLED | MF_STRING ,
                     butInfo[i].nID,
                     butInfo[i].strToolTip );
    }
    CMenu *pMenu;
    pMenu = pMenu->FromHandle ( lMenu );
    CRect rect;
    m_wndToolBar.GetToolBarCtrl().GetRect(ID_ARROW , &rect);
    m_wndToolBar.ClientToScreen(&rect);
    m_wndToolBar.GetToolBarCtrl().PressButton( ID_ARROW );
    pMenu->TrackPopupMenu ( TPM_LEFTBUTTON,
                            rect.left,
                            rect.bottom,
                            this,
                            NULL );
    m_wndToolBar.GetToolBarCtrl().PressButton( ID_ARROW,
                                               FALSE );
  }
  else
    TRACE0("ERROR: lMenu = NULL");
}

8. Add this source code to the CMainFrame construction:

cSpawn.LoadToolBarResource( IDR_MAINFRAME );

9. Add the bitmaps IDB_ARROW and IDB_MENUCHK

That’s it!!!

Special thanks for the Spawn class – it gives me the ability of settings bitmaps for the Menus!!! I hope you like what I did!

Downloads

Download Demo Project – 59.9 Kb

Download Source Code – 10.5 Kb

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.