Compass Control

Environment: Compiled using VC6.0 Sp3 and tested using Win95/98 WinNT4.0 and Win 2000

This article introduces a simple "cylinder" type of compass control based from CStatic. This will allow the control to be used within a dialog using the MFC Class Wizard Dialog or as a static control within a window.

The compass project is a simple dialog based project incorporating the compass control. To illustrate the dynamics of the control, a Proportional, Integer, Derivative Control (PID control) algorithm has been implemented to command the compass control to a user specified heading. This gives the affect of a turning compass.

The compass control is easy to use and has two member functions to control the compass.


From a Dialog

Before you begin, make sure that the compass control class is registered in the Class Wizard database.

  1. In a dialog, inset a picture control.
  2. Set the picture ID.
  3. Create a member variable using the Class Wizard Dialog. Make sure that the category is Control and that Variable Type is CCompass.


UINT SetPos( int nPos )

Return Value

Returns the previous heading.



    Heading to set compass to. Any values are valid. If the position is less than 0 or greater than 360, then compass will reflect their reference angles.


Use the SetPos method to set the compass heading. Normal compass headings range form 0 to 360 degrees. Other values greater than 360 or less than 0 degrees may be used. The compass control will reflect the reference angle.


void SetTicAlign( WORD wAlign )



    Sets the tic alignment. Where:

    COMPASS_TIC_TOP - Aligns tics along top of compass

    COMPASS_TIC_BOTTOM - Aligns tics along the bottom of compass

    COMPASS_TIC_BOTH - Aligns tics on top and bottom of compass


Use SetTicAlign to setup the alignment of degree tics on the compass.


Download demo project - 41 Kb
Download source - 2 Kb


  • What would be the feedback signal in a control loop?

    Posted by Legacy on 02/26/2003 12:00am

    Originally posted by: Rohit

    The algo is very fine but my question is what would be the feedback signal in a control loop? dDelta or what?

  • Could you help me?

    Posted by Legacy on 02/11/2003 12:00am

    Originally posted by: Tom

    I am a beginner in the field of control. I want the seperate control algo for PI,PD and only P. It will be If you send the flow chart which you have developed.
    One more question, whether it will be applicable to the control system where the value is randomly changing.

  • Nice

    Posted by Legacy on 12/22/2002 12:00am

    Originally posted by: Gordon Tomlinson

    Very nice, I work with 3D stuff all the time and asking for a heading, pitch and roll is much nicer with this. Great Job

  • Nice project, can you help me with some questions?

    Posted by Legacy on 05/18/2000 12:00am

    Originally posted by: jerry

    very nice project...
    would you know how to start a pitch ladder control?...
    or how I would start a circular compass.
    i am very interested in control design, but am a beginner and am not sure were to find information
    i have been told that some controls are designed as active
    x and incorporate opengl code.
    hope to hear from you soon.

  • Nice control .. how can I add mouse support to drag the compass

    Posted by Legacy on 02/04/2000 12:00am

    Originally posted by: Steve Cullum

    I like this very much, but I cannot figure out how to drag the compass.

    Can anyone give me some direction!!

    PS. Does anyone know where I can get my hands on other GIS/Aeronautical instrument controls


  • Why a compass control?

    Posted by Legacy on 02/04/2000 12:00am

    Originally posted by: Wim Wouters

    Maybe a stupid question, but why do you need a compass control. It looks cool but I don't understand the use.

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Anthony Christie, the Chief Marketing Officer for Level Communications, is responsible for customer experience, worldwide marketing and product management. In this informative asset, he shares his insights into why a private network connection to cloud-bases applications is the right decision for your enterprise. Download now to find out more.

  • Moving from an on-premises environment to Office 365 does not remove the need to plan for disruptions or reduce the business risk requirements for protecting email services. If anything, some risks increase with a move to the cloud. Read how to ease the transition every business faces if considering or already migrating to cloud email. This white paper discusses: Setting expectations when migrating to Office 365 Understanding the implications of relying solely on Exchange Online security Necessary archiving …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date