点、線、円、四角形を選択するときに、
1度選択して1回描画してしまったら再度選択しなければ
描画されません。
1度選択したらほかのものを選択するまでは描画可能にするには
どのようにすればいいのでしょうか。
ヒントのみでもかまいません。
よろしくお願いします。
環境
Windows XP SP3
Visual Studio 2005
プログラム
#include "dxLib.h" #include <math.h> #define N 20 /*メニュー縦*/ #define M 55 /*メニュー横*/ #define COLOR_TYPE 4 /*色の種類*/ #define MENU_TYPE 6 /*メニューの種類*/ #define COLOR_PLACE 121 /*カラー変更Y座標上*/ int string_color;/*文字列色*/ int menu_color;/*メニュー背景色*/ int menu_out_color;/*メニュー枠色*/ char *string[/url]={"点","線","円","四角形","クリア","終了"};/*メニュー文字列*/ int color_type[COLOR_TYPE]; /*色*/ int loop_flag=0; /*終了フラグ*/ int color=0; /*色番号*/ int menu; /*現在のメニュー番号*/ void menu_display(); void Color(int m_x,int m_y); void Menu(int menu); void square(); void circle(); int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nShowCmd){ int i;/*ループ変数*/ int m_x,m_y; /*終了時マウス座標*/ /*初期化*/ SetMainWindowText("簡易ペイント"); ChangeWindowMode(TRUE); SetBackgroundColor(255,255,255); if(DxLib_Init()==-1) return -1; SetDrawScreen(DX_SCREEN_BACK); /*色取得*/ string_color=GetColor(0,0,0); menu_color =GetColor(127,127,127); menu_out_color=GetColor(255,255,255); color_type[0]=GetColor(0,0,0); color_type[1]=GetColor(255,0,0); color_type[2]=GetColor(0,255,0); color_type[3]=GetColor(0,0,255); while(ProcessMessage()==0){ while(1){ /*エラー*/ if(ProcessMessage()==-1){ DxLib_End(); exit(1); } menu_display(); if((GetMouseInput()&MOUSE_INPUT_LEFT)!=0){ /*マウス座標取得*/ GetMousePoint(&m_x,&m_y); if(1<=m_x&&54>=m_x){ /*点*/ if(1<=m_y&&19>=m_y){ menu=0; } /*線*/ if(21<=m_y&&39>=m_y){ menu=1; } /*円*/ if(41<=m_y&&59>=m_y){ menu=2; } /*四角形*/ if(61<=m_y&&79>=m_y){ menu=3; } /*画面クリア*/ if(81<=m_y&&99>=m_y){ menu=4; } /*終了*/ if(101<=m_y&&119>=m_y){ menu=5; } if(120<=m_y&&199>=m_y){ menu=6; Color(m_x,m_y); } if(menu!=6){ Menu(menu); } } } } } DxLib_End(); return 0; } /*メニュー表示関数*/ void menu_display(){ int i; /*メニュー表示*/ for(i=0;i<MENU_TYPE;i++){ DrawBox(0,N*i,M,N*(i+1),menu_color,TRUE); DrawBox(0,N*i,M,N*(i+1),menu_out_color,FALSE); DrawString(2,N*i+2,string,string_color); } /*色表示*/ for(i=0;i<COLOR_TYPE;i++){ DrawBox(1,COLOR_PLACE+N*i,M-1,COLOR_PLACE+N*(i+1),color_type,TRUE); } ScreenFlip(); } /*色変更関数*/ void Color(int m_x,int m_y){ /*黒*/ if(1<=m_x&&54>=m_x&&121<=m_y&&140>=m_y){ color=0; } /*赤*/ if(1<=m_x&&54>=m_x&&141<=m_y&&160>=m_y){ color=1; } /*緑*/ if(1<=m_x&&54>=m_x&&161<=m_y&&180>=m_y){ color=2; } /*青*/ if(1<=m_x&&54>=m_x&&181<=m_y&&2000>=m_y){ color=3; } }