Buyer requires a class to be written for Windows VC++ allowing the showing of bitmaps to be shown on a CDockablePane in a MDI based app.
You are developing a Class "CBitmapInfoViewer" with bitmap and information objects within it that will be manipulated...?
Each bitmap and info will be stored in a class "CBitmapInfoObj". There will be a CArray of such within "CBitmapInfoViewer".
Coder is to create a Visual Studio MFC application, Multiple tabbed documents, Project style 'Visual Studio', Document/View Architecture, Unicode library as a base.
(Should take about 30 seconds with VS2010).
Coder is to then add a new CDockablePane Derived Side window, with a Class that we are interested in developing to show "CBitmapInfoViewer".
The class is to be designed to display pre-created CBitmap objects and allow dragging, resizing, single and double click selecting of same. Saving and Loading of the state of the view is also required.
## Deliverables
Buyer requires a class to be written for Windows VC++ allowing the showing of bitmaps to be shown on a CDockablePane in a MDI based app.
You are developing a Class "CBitmapInfoViewer" with bitmap and information objects within it that will be manipulated...?
Each bitmap and info will be stored in a class "CBitmapInfoObj". There will be a CArray of such within "CBitmapInfoViewer".
Coder is to create a Visual Studio MFC application, Multiple tabbed documents, Project style 'Visual Studio', Document/View Architecture, Unicode library as a base.
(Should take about 30 seconds with VS2010).
Coder is to then add a new CDockablePane Derived Side window, with a Class that we are interested in developing to show "CBitmapInfoViewer"
The class is to be designed to display pre-created CBitmap objects and allow dragging, resizing, single and double click selecting of same.
A right click -bitmap- context menu should allow delete as should pressing the delete after single click selects a bitmap object.
A right click -background- context menu should be available.
The "CBitmapInfoObj"objects should be stored as pointers in a CArray within the class.?
CArray <CBitmapInfoObj*,CBitmapInfoObj*> m_arrBitmapInfoObjects; ?
Each bitmap also has a CString with it which will be of varying length (less than a gig), and will contain information relevant to that object.
In addition, the CDockablePane is to be considered a 'viewport' into the area.?
Rather than having 'scrollbars', when the user right or left drags the background of the control, the relative position of all of the bitmap objects shown within it should be moved accordingly.
Class "CBitmapInfoViewer"?
---------------------------
FUNCTIONS include:
AddBitmapObject(CBitmap* pBitmapToShow,int xPos,int yPos,int nWidth, int nHeight, CString sXMLWithObject)
Delete(int nNoBitmapObjectToDelete)
SaveViewAndObjects(CString sFilenameToSaveStateTo); // saves state of the new control, including the bitmaps and sXML within objects
LoadViewAndObjects(CSTring sFilenameToLoadStateTo); // saves state of the control, including the bitmaps and sXML within
AND should have a destructor that deletes all.
MEMBERS include:
m_arrBitmapInfoObjects; // the CArray of BitmapInfoObjects
m_xViewOffset // set to zero initially - represents the additional (scroll like) offset of all bitmaps in the viewing area caused by user dragging background
m_yviewOffset; // set to zero initially - " " " ...
Class "CBitmapInfoObj"
---------------------------
FUNCTIONS include:
Draw(int* pxOffSet, int* pxOffSet);
Resize(int nNewWidth, int nNewHeight); // fixes the top left of the bitmap, and resizes?
Shift(int xShift, int yShift); // shifts the bitmap sideways by x/y
CString GetInfo(); // shows in an AfxMessage Box the contents of the m_sXML
SetInfo(CString); // sets the m_sXML string
MEMBERS include:
CBitmap* m_pBitmap;
m_xPos,
m_yPos,
m_nWidth;
m_nHeight;
CString m_sXML; // this is a string of information which can be very big
m_bSelected; // whether object is selected by clicking on it or not... important for delete only at this stage.
The events to be captured include
1. Mouse click - selects bitmaps if clicked on a bitmap in the view
2. Mouse double click - activates an AfxMessageBox which shows the index (in the CArray) of the bitmap clicked on, AND the sXML of that object.
3. Mouse move (drag) - the background of the area must be draggable on right drag of the mouse... i.e. right or left dragging the mouse across the background will change the position of the 'view'from initially?
You can load your CBitmaps for initial functionality from whereever is convenient for you ... perhaps even make them load from resources if you like...
Make sure the bitmaps you load are of variable size... and then show them with other sizes... i.e. the size of the bitmap you load should be able to be different from the size of the bitmap seen on the window... e.g. if it is 500*200, should be able to be shown as 100*30 or whatever dimensions go into the 'AddBitmapObject' function above.
Any additional functionality required will be asked for along with offered bonuses. Please quote on the functionality listed above only.