Transformation
Start with the project you created in Vector Tools.
Take the following steps to add scale, rotation and translation to the sample program:
1. |
For this tutorial, the VectorWindow must capture and process keystrokes. To process keystrokes, you must derive a class from LVectorWindow and override the MsgProcCallBack (). |
2. |
Click the "Class View" tab in the project workspace. |
3. |
Right click "tutorial classes" and choose "Add Class..." |
4. |
In the Template select c++ class and click add. |
5. |
In the Name edit box, enter "MyVectorWindow". |
6. |
In the Base Class edit box type "LVectorWindow". And click Finish. |
8. |
Double click the "MyVectorWindow" to open the file "MyVectorWindow.h" and immediately before the class declaration, add the line: |
#include "ltwrappr.h"
9. |
Double click the "CTutorialDoc" to open "tutorialDoc.h" and immediately before the class declaration, add the line: |
#include "MyVectorWindow.h"
10. |
Change the definition of *m_pVectorWindow from: |
LVectorWindow *m_pVectorWindow;
to
MyVectorWindow *m_pVectorWindow;
11. |
Open the "CTutorialDoc" branch, and double click the CTutorialDoc() constructor. Change the CTutorialDoc() constructor as follows: |
CTutorialDoc::CTutorialDoc()
{
m_pVectorWindow = new MyVectorWindow;
m_pVectorWindow->SetBackgroundColor ();
}
12. |
Click the Class View tab in the project workspace. |
13. |
Right-click the class "MyVectorWindow" and choose "Add Function..." |
14. |
Enter LRESULT for the function return type. |
15. |
Enter MsgProcCallBack for the function name, and add the following parameters: (HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) |
16. |
Select the "Protected" from the Access combo box. |
17. |
Click Finish. |
18. |
Add the following code to the newly created MsgProcCallBack () member function: |
LRESULT MyVectorWindow::MsgProcCallBack(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
VECTORPOINT VecPoint;
switch (uMsg)
{
case WM_CHAR:
{
switch( wParam )
{
case 'x':
case 'X':
case 'y':
case 'Y':
case 'z':
case 'Z':
// get current rotation value
GetRotation(&VecPoint);
VecPoint.x += ( wParam == 'x' || wParam == 'X' ) ? 5.0 : 0;
VecPoint.y += ( wParam == 'y' || wParam == 'Y' ) ? 5.0 : 0;
VecPoint.z += ( wParam == 'z' || wParam == 'Z' ) ? 5.0 : 0;
// set new rotation value
SetRotation(&VecPoint);
break;
}
}
}
return LVectorWindow::MsgProcCallBack ( hWnd, uMsg, wParam, lParam);
}
19. |
Edit Stdafx.h and add the following lines: |
#include "ltwrappr.h"
#include "MyVectorWindow.h"
#include "Tutorial.h"
20. |
Compile and run the demo. |
21. |
Select File/Open… From the program menu, browse to the "images" folder of your LEAD installation. Open the image random.dxf and click OK. |
22. |
Now you should be able to rotate the vector drawing around any axis using the x, y and z keys on your keyboard. |