#include "DxLib.h"
#include <windows.h>
#include "controll.h"
#include "dialog.h"
#include "image.h"
#include "input.h"
/* ウィンドウ情報 */
#define WINDOW_DOUBLE (true) // 二重起動フラグ
#define WINDOW_STYLE (0x2) // ウィンドウスタイル
#define WINDOW_TRANS (true) // ウィンドウ透過フラグ
#define WC_R (0) // 背景色R
#define WC_G (0) // 背景色G
#define WC_B (0) // 背景色B
/* 画像情報構造体 */
typedef struct{
int handle;
GrInfoF_t info;
}Graph_t;
/* ウィンドウ情報構造体 */
typedef struct{
HWND hWnd;
GrInfoF_t info;
}Window_t;
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ){
/*ウィンドウ情報の書き換え*/
SetDoubleStartValidFlag( WINDOW_DOUBLE ); // 多重起動の許可
ChangeWindowMode( true ); // ウィンドウモードに設定
SetWindowStyleMode( WINDOW_STYLE ); // ウィンドウスタイルの変更(枠なし)
SetUseBackBufferTransColorFlag( WINDOW_TRANS ); // ウィンドウの透過を許可
SetBackgroundColor( WC_R, WC_G, WC_B ); // 背景色をセット
SetTransColor( WC_R, WC_G, WC_B ) ; // 透過色をセット
DxLib_Init(); // ウィンドウ生成&ライブラリ初期化
SetDrawMode( DX_SCREEN_BACK ); // 描画先の設定
/* ダイアログから画像呼び出し */
FileInfo file = OpenFileToDialog( "画像の選択", "画像ファイル(*.jpg,*.png,*.bmp)\0*.jpg;*.png;*.bmp\0全て(*.*)\0*.*\0\0", "" );
/* キャンセルされたらプログラムの終了 */
if(file.path[0] == '\0'){
DxLib_End();
return 1;
}
/* 変数宣言と必要な情報の取得 */
Graph_t graph = { LoadGraph(file.path), GetNowImageInfoF( 0, 0, graph.handle ) }; // 画像構造体に画像読み込みと画像の情報取得
Window_t window = { GetMainWindowHandle() }; // ウィンドウ構造体のwindow.hWndにウィンドウハンドル取得
/* ループ */
SetWindowPos( window.hWnd, HWND_TOPMOST, 0, 0, 80, 80, SWP_NOZORDER); // ウィンドウを常に最前面とする
while( !ScreenFlip() && !ProcessMessage() && !ClearDrawScreen() && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){
DrawGraphF( graph.info.x1, graph.info.y1, graph.handle, true );
}
DxLib_End();
return 0;
}
背景を透過させた枠なしウィンドウを最前面表示させるプログラムを組んだのですが、
ウィンドウの大きさが変更できず困っています。
上記のソースではSetWindowPos()でウィンドウのサイズを80x80に設定しているのですが
画像を読み込んでいざ表示されると80x80になっておらず、SetWindowSize()関数を使ってみても変更されません。
何が原因なのかご教授願います。。。