画像が読み込まれない
Posted: 2011年10月26日(水) 19:09
グローバル変数の配列であるGHandle[50]に画像を読み込ませて
draw_clock関数とtitle関数で画像を出力させてます。
デバックしてみると、
draw_clock関数の時はGHandleの値が変化していますが
title関数の時はGHandleの値が変化していません
ご助力の程、よろしくお願いいたします。
draw_clock関数とtitle関数で画像を出力させてます。
デバックしてみると、
draw_clock関数の時はGHandleの値が変化していますが
title関数の時はGHandleの値が変化していません
ご助力の程、よろしくお願いいたします。
//draw_clock.h
void draw_clock();
void Load();
static int GHandle[50];
//draw_clock.cpp
#include <time.h>
#include "DxLib.h"
#include "draw_clock.h"
#pragma warning ( disable : 4996 )
#define radius 96 //文字盤の半径
#define X 220
#define Y 160
#define FontSize 16
#define PI 3.1415926535897932384626433832795f
void draw_clock(){
time_t timer;
struct tm *local;
timer = time(NULL);//現在時刻を取得
local = localtime(&timer); //地方時に変換
int needle_x = X + radius;
int needle_y = Y + radius;
int lock_plate_x = X + radius - 4;
int lock_plate_y = Y + radius - 4;
// 読みこんだグラフィックを回転描画
DrawGraph( X , Y , GHandle[0] , TRUE ) ;//文字盤
DrawRotaGraph2( needle_x, needle_y, 0, 0, 1.0,( (local->tm_hour%12)*30 + (local->tm_min/2) + 180)*PI/180, GHandle[1], TRUE ) ;//短針 時間*30度%12時間 + 分/2 1分毎に0.5度づつ進む為/2
DrawRotaGraph2( needle_x, needle_y, 0, 0, 1.0,( (local->tm_min*6) + 180)*PI/180, GHandle[2], TRUE ) ;//長針
DrawRotaGraph2( needle_x, needle_y, 0, 0, 1.0,( (local->tm_sec*6) + 180)*PI/180, GHandle[3], TRUE ) ;//秒針
}
void Load(){
GHandle[0] = LoadGraph( "Resourse./PNG/文字盤.png" );
GHandle[1] = LoadGraph( "Resourse./PNG/短針.png");
GHandle[2] = LoadGraph( "Resourse./PNG/長針.png" );
GHandle[3] = LoadGraph( "Resourse./PNG/秒針.png");
LoadDivGraph( "Resourse./PNG/メニューとオプション.png" , 18 , 2 , 9 , 128 , 16 , GHandle + 4 ) ;
}
//title.cpp
#include "DxLib.h"
#include "draw_clock.h"
#define FontSize 40
#define X 220
#define Y 160
int title(int menu_number){
int status = 0;
if(menu_number != 3){//オプション以外
int menu_position_x = X + 192;
for(int i=4; i < 10; i += 2){
DrawGraph( menu_position_x , Y + (i-4)*16 , GHandle[i] , TRUE ) ;//メニューの表示
}
int Cr_0,Cr_1,Cr_2 ;
int MouseInput=0,MouseX=0,MouseY=0;
// 描画する文字列のサイズを設定
SetFontSize( FontSize ) ;
// 白色の値を取得
Cr_0 = GetColor( 0xff , 0xff , 0xff ) ;
Cr_1 = GetColor( 0xff , 0xff , 0xff ) ;
Cr_2 = GetColor( 0xff , 0xff , 0xff ) ;
// 文字列の描画
DrawString( 16 , 384 , "時刻" , Cr_0 );
DrawString( 176 , 384 , "日付/曜日" , Cr_1 );
DrawString( 416 , 384 , "オプション" , Cr_2 );
// マウスの位置を取得
GetMousePoint( &MouseX , &MouseY ) ;
if(MouseX > 20 && MouseX < 176 && MouseY > 384 && MouseY < 384 + FontSize){//時刻の色変更
Cr_0 = GetColor( 0xff , 0xff , 0 ) ;
status = 1;
}
else if(MouseX >= 176 && MouseX < 416 && MouseY > 384 && MouseY < 384 + FontSize){//日付・曜日の色変更
Cr_1 = GetColor( 0xff , 0xff , 0 ) ;
status = 2;
}
else if(MouseX >= 416 && MouseY > 384 && MouseY < 384 + FontSize){//オプションの色変更
Cr_2 = GetColor( 0xff , 0xff , 0 ) ;
status = 3;
}
else
status = 0;
// 文字列の描画
DrawString( 16 , 384 , "時刻" , Cr_0 );
DrawString( 176 , 384 , "日付/曜日" , Cr_1 );
DrawString( 416 , 384 , "オプション" , Cr_2 );
}
return status;
}
//main.cpp
#include "DxLib.h"
#include "dayData.h"
#include "draw_clock.h"
void jihou(struct dayData* day);
void plan(struct dayData* day);
void option(struct dayData* day);
void option_draw();
void Time(struct dayData* day);
void date(struct dayData* day);
void load_day(int,struct dayData* day);
void save_day(int,struct dayData* day);
void draw_clock();
int title(int);
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
struct dayData day[100];
// マウス状態管理用変数
int nClickNow = 0 , nClickPrev = 0;
int nClickNow_R = 0 , nClickPrev_R = 0;
int nClickR_Count = 0;
int status = 0,temp = 0;
bool title_flg = false;
SetMainWindowText("clock");
ChangeWindowMode( TRUE );
// ウインドウの透過色モードON
SetUseBackBufferTransColorFlag( TRUE ) ;
SetDrawScreen(DX_SCREEN_BACK);
SetWindowStyleMode(2);
// SetWindowPosition(1200, 720 ) ;
if ( DxLib_Init( ) == -1 ) return -1;
Load();
load_day(status,day);//日にちを読み込む
plan(day);//予定を音声再生する
while (ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){
if(GetMouseInput() & MOUSE_INPUT_LEFT) {
SendMessage(GetMainWindowHandle(), WM_NCLBUTTONDOWN, HTCAPTION, 0);//ウインドウを移動させる為、ウインドウ枠をクリックしたと思わせる
}
jihou(day);
draw_clock();
// マウス状態の更新
nClickNow = (GetMouseInput() & MOUSE_INPUT_LEFT);
nClickNow_R = (GetMouseInput() & MOUSE_INPUT_RIGHT);
if( nClickNow_R )nClickR_Count++;//右クリックを押しているときはカウントアップ
else{nClickR_Count = 0;}//それ以外ではカウントを0にする
if (!status && nClickR_Count == 1){
break;
}
if ( nClickNow_R && !nClickPrev_R){
status = 0;
title_flg = false;
temp = 0;
}
if(title_flg)temp = title(status);
if( nClickNow && !nClickPrev){
if(temp)status = temp;
if(status == 0){
title_flg = true;
status = 4;
}
else if(temp == 1){
Time(day);
}
else if(temp == 2 ){
date(day);
}
else if(status == 3){
option(day);
save_day(status,day);//日にちを書き込む
load_day(status,day);//変更された日にちを読み込む
}
}
if(status == 3){
option_draw();
}
// 今回のクリック状態を保持する
nClickPrev = nClickNow;
nClickPrev_R = nClickNow_R;
}
DxLib_End();
return 0;
}