ダイアログボックスを出力している間も
時計の針を動かしたいので
モードレスダイアログボックスで出力させたいです。
下のコードで時計の針は動くようになりましたが
ダイアログボックスをクリックした時の反応が
おかしいです。
ご助力の程、よろしくお願いします。
//main.cpp
#include <windows.h>
#include "DxLib.h"
#include "dayData.h"
#include "draw_clock.h"
#include "Setup.h"
#include "resource.h"
#define APP_NAME TEXT("clock")
#define chara_width 64
void jihou(struct dayData* day);
void plan(struct dayData* day);
void Time(struct dayData* day);
void date(struct dayData* day);
void version(struct dayData* day);
int title(int,struct dayData* day);
HINSTANCE hInst;
HWND hWnd;//メインのウィンドウハンドル
HWND hDlg;//モードレスダイアログボックスのハンドル
struct dayData day[450];
BOOL CALLBACK MyDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp){
switch(msg){
case WM_COMMAND:
switch(LOWORD(wp) ){
case IDOK:
EndDialog(hDlg,IDOK);
return TRUE;
case IDCANCEL:
EndDialog(hDlg,IDCANCEL);
return TRUE;
case IDC_BUTTON1:
version(day);
return TRUE;
}
return FALSE;
}
return FALSE;
}
LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
static int top = 0;
switch(uMsg) {
case WM_MOVING:
{
LPRECT p = (LPRECT)lParam;
top = p -> top;
break;
}
case WM_WINDOWPOSCHANGING:
{
WINDOWPOS* p = (WINDOWPOS*)lParam;
p -> y = top;
break;
}
case WM_NCHITTEST:
return HTCAPTION;
case WM_RBUTTONDOWN:
hDlg = CreateDialog( hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, (DLGPROC)MyDlgProc );
ShowWindow(hDlg,SW_NORMAL);
break;
case WM_CLOSE:
if(IsWindow(hDlg)){
DestroyWindow(hDlg);
}
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
hInst = hInstance;
if(FindWindow(APP_NAME , NULL) != NULL ){
MessageBox(NULL , TEXT("多重起動を確認しました") , NULL , MB_OK);
return 0;
}
// マウス状態管理用変数
int nClickNow = 0 , nClickPrev = 0;
int nClickNow_R = 0 , nClickPrev_R = 0;
int nClickR_Count = 0;
int status = 0,temp = 0;
bool menu_flg = false;
// 画面モードの変更
SetGraphMode( 1680 , 1050 , 32 ) ;//パソコンの解像度に合わせる
SetMainWindowText("clock");
ChangeWindowMode( TRUE );
SetUseBackBufferTransColorFlag( TRUE );// ウインドウの透過色モードON
SetWindowStyleMode(0);
SetAlwaysRunFlag( TRUE );
SetHookWinProc( WindowProc );
if ( DxLib_Init( ) == -1 ) return -1;
SetDrawScreen(DX_SCREEN_BACK);
Load_Graph();
Setup_load(day);//設定を読み込む
plan(day);//予定を音声再生する
MSG msg;
int NewMouse = 0, OldMouse = GetMouseInput();
while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {
if(!hDlg || !IsDialogMessage(hDlg,&msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
//処理を省略
DxLib_End( );
return (int)msg.wParam;
}