#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include /**********************************/ /* Window Parameter Setting */ /**********************************/ #define PROGRAM_TITLE "Mlib for C++ Language (ver 3.8)" // Caption of Title bar #define MAINWIN_W 1000 //Width of main window (in pixel) #define MAINWIN_H 750 //Height of main window (in pixel) #define PB_NUM 3 //Number of used push button #define CK_NUM 1 //Number of used check box #define RD_NUM 1 //Number of used radio box #define ED_NUM 3 //Number of used edit box #define ST_NUM 0 //Number of static text box /************/ /* end */ /************/ /******************************/ /* Constant (Never change) */ /******************************/ #define FIGMAX 20 //フィギュアウインドウに描ける図の最大数 #define PALLET_NUM (8*32) //2D画像のカラーマップの諧調(8〜256までで8の倍数を指定) #define BUFSIZE_W 81 //メモウィンドウの水平文字数 #define BUFSIZE_H 1024 //メモウインドウの記憶行数 #define DISPSIZE_H 7 //メモウインドウの表示行数 #define MEMOWIN_H (19*(DISPSIZE_H+1)) //メモウインドウの高さ #define PNMAX 20 //フィギュアウインドウに記憶できる線種の最大数 #define BUFNMAX 25 //軸キャプション,数値ラベル等の最大文字サイズ #define MEMO_ID1 0 #define SCRBAR_ID1 1 #define DIALOG1 2 #define BUTTON_ID1 3 #define EDIT_ID1 (BUTTON_ID1+PB_NUM+CK_NUM+RD_NUM) #define STATIC_ID1 (EDIT_ID1+ED_NUM) //plflug #define GRAY 0 //グレイスケール #define RAINBOW 1 //フルカラー虹色 (一般) #define CYCLIC 2 //黒-青-白-赤-黒 (位相等の巡回的な数値用) //cbflug #define LEGEND_ON 1 //2Dプロットの凡例表示 #define LEGEND_OFF 0 //2Dプロットの凡例非表示 //szflug #define SIZE_NORMAL 0 //フィギュアウインドウの枠に2D画像表示 #define SIZE_SQUARE 1 //フィギュアウインドウの縦横サイズをあわせる #define SIZE_DATA 2 //フィギュアウインドウをデータのサイズに合わせる //bfflug         #define FILL_OFF 0 // 内部を塗らない(保存) #define FILL_ON 1 //指定範囲を枠と同色で塗りつぶす, #define FILL_WHITE 2 // 枠内を白色で塗りつぶす //clflug #define DRAW_OUTLINE -1 //枠のみ表示 #define CLEAR_INSIDE 0 //カレントフィギュアウインドウの内部消去,枠,軸は消さない #define CLEAR_FIG 1 //カレントフィギュアウインドウの全消去 #define CLEAR_ALL 2 //グラフィックウインドウの全消去 //grflug #define ZERO_LINE 0 //ゼロラインのみの描画 #define YGRID_LINE 1 //グリッドラインの描画 #define XGRID_LINE 2 //グリッドラインの描画 #define XYGRID_LINE 3 //グリッドラインの描画 /***********************/ /* End    */ /***********************/ /**************************************************/ /* Definition of gloval variables (never change) */ /**************************************************/ int iID_Cfw; //現在のフィギュアウインドウのID int iNum_fw; //作られたフィギュアウインドウの最大数 struct figure //各フィギュアウインドウの位置、最大値、最小値等の構造体 { int xwin; //フィギュアウインドウ左上のx座標 int ywin; //フィギュアウインドウ左上のy座標 int wwin; //フィギュアウインドウの幅 int hwin; //フィギュアウインドウの高さ int hn; //グラフィックウインドウでの縦方向のフィギュアウインドウの数 int wn; //グラフィックウインドウでの横方向のフィギュアウインドウの数 int nn; //その表示位置 double ymin; //y軸スケール最小値 double ymax; //y軸スケール最大値 double xmin; //x軸スケール最小値 double xmax; //x軸スケール最大値 size_t nobm; //y軸数値ラベルの最大文字数 double xs; //x軸の数値ラベル最小値 double ys; //y軸の数値ラベル最小値 double xe; //x軸の数値ラベル最大値 double ye; //y軸の数値ラベル最大値 double xd; //x軸の数値ラベル間隔 double yd; //y軸の数値ラベル間隔 int N; //ウインドウに描画される点の個数 char xlabel[BUFNMAX+1]; //x軸キャプション(25文字まで) char ylabel[BUFNMAX+1]; //y軸キャプション(25文字まで) int pf[PNMAX]; //フィギュアウインドウに重ね書きされた図のペンスタイルを記憶 int pw[PNMAX]; //フィギュアウインドウに重ね書きされた図のペン幅を記憶 COLORREF pc[PNMAX]; //フィギュアウインドウに重ね書きされた図のペンカラーを記憶 int pn; //フィギュアウインドウに重ね書きされた個数 }sFW[FIGMAX]; struct controle //コントロールの位置、サイズ、キャプション情報の構造体 { HWND hdl; int x; //ウインドウ左上のx座標 int y; //ウインドウ左上のy座標 int w; //ウインドウの幅 int h; //ウインドウの高さ long chk; //チェックボタン等のチェック状態が入るフラグ TCHAR name[BUFNMAX+1]; }sPB[PB_NUM+1],sED[ED_NUM+1],sCK[CK_NUM+1],sRD[RD_NUM+1],sST[ST_NUM+1],sME,sGW; HINSTANCE hInstance,hInst; TCHAR MemoBuf[BUFSIZE_H][BUFSIZE_W]; TCHAR MemoBuf1[BUFSIZE_H*BUFSIZE_W]; TCHAR Input1[100]; HWND hWnd,hMemo1,hScroll,hEditDialog,hDiaBt1,hDiaBt2; HDC hBuffer; SCROLLINFO scr; HBITMAP hBitmap; LOGFONT DefFont; COLORREF PenColor=RGB(0,0,0); int PenStyle=PS_SOLID; int PenWidth=0; int iPpc0=0; int iVLine; int iVLine0; int ivVLine; /*************/ /* End */ /*************/ /************************************************/ /* Global variables concern with FONT */ /************************************************/ //Chage of the following variables is valid in main progeam // //Available font //MS GOTHIC, MS PGOTHIC, MS MINCHO, MS PMINCHO //TIMES, TAHOMA, SYLFAEN, CENTURY //RAGE ITALIC, SCRIPT MT BOLD TCHAR Used_Font[32]=TEXT("TIMES"); // Default font in graphic window long Used_Font_Size=15; // Font size BYTE Italic_Font_Flug=0; //0 -- normal、1 -- Italic /**************/ /* End */ /**************/ /**********************************************************/ /* グラフィックウインドウ内の各フィギュアウインドウの */ /* 左右上下のマージンを定めるグローバル変数の変更箇所 */ /**********************************************************/ int MERGIN_L=80; // Left mergin in figure window、when caption in y-axis is wide, increase the value here int MERGIN_R=30; //Right mergin in figure window int MERGIN_T=12; //Upper mergin in figure window int MERGIN_B=60; //Lower mergin in figure window /******************/ /* ここまで  */ /******************/ void component(){ /**************************************************/ /* ウインドウ内の各コントロール情報の変更箇所 */ /**************************************************/ //標準のエディットウインドウ、ボタン情報のグローバル変数への登録 //ウインドウ配置を標準から変えたい場合はここで構造体変数を直接変更する int i; int MERGIN_W=20; //メインウィンドウの端マージン int MERGIN_C=10 ; //各コントロール間隔のマージン int BTWIN_W=120; //プッシュボタンの幅 int BTWIN_H=50; //プッシュボタンの高さ int EDBOX_W=80; //EditBox の高さ int EDBOX_H=27; //EditBox の高さ TCHAR buf[BUFNMAX+1]; //各プッシュボタンの情報登録(iはボタン番号に対応) for(i=0;i