// Coord3D.cpp : DLL アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include "Coord3D.h" #include "Window.h" #include "InputNumDLG.h" //#include "ProgressBarDLG.h" #ifdef _DEBUG #define new DEBUG_NEW #endif using namespace jbxwl; // 唯一のアプリケーション オブジェクトです。 CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // MFC を初期化して、エラーの場合は結果を印刷します。 if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: 必要に応じてエラー コードを変更してください。 _tprintf(_T("致命的なエラー: MFC の初期化ができませんでした\n")); nRetCode = 1; } else{ // TODO: アプリケーションの動作を記述するコードをここに挿入してください。 } return nRetCode; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // COORD3D_API char* get_info(int n) { switch(n) { case 0 : return "3D座標系"; // ここにメニュータイトルを書く case 1 : return "coord3d_proc"; case 2 : return "coord3d_free"; case 3 : return "coord3d_active"; default: return NULL; } } /* 処理不能の場合: NULL を返す 処理失敗の場合: xp->state=ERROR_GRAPH_NODATA にして返す. キャンセルの場合:xp->state=ERROR_GRAPH_CANCEL にして返す. */ COORD3D_API MSGraph* coord3d_proc(MSGraph* vp) { MSGraph* xp = NULL; ///////////////////////////////////////// // 以下に処理コードを書く // 入力 vp, 出力 xp ///////////////////////////////////////// double wsz = 10.0; xp = new MSGraph(200, 200, 200); xp->setWindow3D(-wsz, -wsz, -wsz, wsz, wsz, wsz); // XYZ wLine3D(*xp, -wsz, 0.0, 0.0, wsz, 0.0, 0.0, ARGB2Word(0, 0xff, 0, 0)); wLine3D(*xp, 0.0, -wsz, 0.0, 0.0, wsz, 0.0, ARGB2Word(0, 0, 0xff, 0)); wLine3D(*xp, 0.0, 0.0, -wsz, 0.0, 0.0, wsz, ARGB2Word(0, 0, 0, 0xff)); /* Frame */ wLine3D(*xp, -wsz, -wsz, -wsz, wsz, -wsz, -wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, -wsz, -wsz, -wsz, -wsz, wsz, -wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, -wsz, -wsz, -wsz, -wsz, -wsz, wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, wsz, wsz, wsz, -wsz, wsz, wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, wsz, wsz, wsz, wsz, -wsz, wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, wsz, wsz, wsz, wsz, wsz, -wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, wsz, wsz, -wsz, -wsz, wsz, -wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, wsz, wsz, -wsz, wsz, -wsz, -wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, wsz, -wsz, wsz, -wsz, -wsz, wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, wsz, -wsz, wsz, wsz, -wsz, -wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, -wsz, wsz, wsz, -wsz, -wsz, wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); wLine3D(*xp, -wsz, wsz, wsz, -wsz, wsz, -wsz, ARGB2Word(0, 0xff, 0xff, 0xff)); /**/ //wSetPixel3D(*xp, 2.0, 0.0, 0.0, ARGB2Word(0, 0xff, 0, 0xff)); //wSetPixel3D(*xp, 0.0, 4.0, 0.0, ARGB2Word(0, 0xff, 0, 0xff)); //wSetPixel3D(*xp, 0.0, 0.0, 6.0, ARGB2Word(0, 0xff, 0, 0xff)); //wLine3D(*xp, 0.0, 0.0, 0.0, 10.0, 10.0, 10.0, ARGB2Word(0, 0xff, 0xff, 0)); //wLine3D(*xp, 0.0, 0.0, 0.0, 5.0, 5.0, 0.0, ARGB2Word(0, 0xff, 0xff, 0)); //wLine3D(*xp, 0.0, 0.0, 0.0, 5.0, 0.0, 5.0, ARGB2Word(0, 0xff, 0xff, 0xff)); //wLine3D(*xp, 0.0, 0.0, 0.0, 0.0, 4.0, 5.0, ARGB2Word(0, 0, 0xff, 0xff)); //MSGraph_Line3D(*xp, 0, 0, 0, 199, 199, 199, 2000); ///////////////////////////////////////// // 処理コードはここまで ///////////////////////////////////////// return xp; } /* TRUEを返すと,入力データ無しでもアクティブになる. */ COORD3D_API BOOL coord3d_active(void) { return TRUE; } COORD3D_API void coord3d_free(MSGraph* vp) { if (vp!=NULL) { vp->free(); delete(vp); } return; }