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.
Use
From a Dialog
Before you begin, make sure that the compass control class is registered in the
Class Wizard database.
- In a dialog, inset a picture control.
- Set the picture ID.
- Create a member variable using the Class Wizard Dialog. Make sure that the category is Control and that Variable Type is CCompass.
CCompass::SetPos
UINT SetPos( int nPos )
Return Value
Returns the previous heading.
Parameters
nPos
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.
Remarks
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.
CCompass::SetTicAlign
void SetTicAlign( WORD wAlign )
Parameters
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
Remarks
Use SetTicAlign to setup the alignment of degree tics on the compass.