Frost Moon Project

MinGWでDTM_SETFORMATを送っても書式が変更できない場合の対処法 - Frost Moon Project アクセスランキング

Home > Tips > MinGWでDTM_SETFORMATを送っても書式変更が行われない場合の対処法

MinGWでDTM_SETFORMATを送っても書式変更が行われない場合の対処法

  1. 問題
  2. 解決方法

問題
Code::BlocksでダイアログベースのWin32アプリケーションを作成し、
ResEditでDateTimePickerをぽとぺた。
tchar.hとcommctrl.hをincludeし、UNICODEをdefine。
WM_INITDIALOGに以下を加え、DateTimePickerの書式変更を試みますが...
DTM_SETFORMAT
1
SendDlgItemMessage(hwndDlg,IDC_DATETIMEPICKER1,DTM_SETFORMAT,(WPARAM)0,(LPARAM)_T("yyyyMMddHHmm"));
何故か変更されません。_T("yyyy")や_T("yyMMMM")など他の文字列にしてみても、変更されません。


ここで、ANSIビルドにしてみたり、Visual C++ Express Editionでビルドすると正常に変更されます。
解決方法
正解はヘッダファイルにありました。

手元にあるMinGWのcommctrl.hには
commctrl.h[MinGW]
1
2
#define DTM_SETFORMATA 0x1005
#define DTM_SETFORMATW 0x1050
とあります。

ここで、VC++側のCommCtrl.hを見てみると、
CommCtrl.h[VC++]
1
2
3
4
#define DTM_FIRST        0x1000
...
#define DTM_SETFORMATA (DTM_FIRST + 5)
#define DTM_SETFORMATW (DTM_FIRST + 50)



      ◢▓▓█ ▓▓▋▓▓▂▅▓▓▓   ▓▉▓▓▓▓ ▓▓  ▓▓▓▅▂▓▓▐▓▓ █▓▓▓
   ▃▆▀▓▓█ ▓▓▌▅▀  ▓▓▓   ▓ ▊▓▓▓▓ ▓▓  ▓▓▓  ▀▅▐▓▓ █▓▓▓
▀◣    ▓▓█ ▓▓▀▓▓  ▓▓▓   ▓ ▋▓▓▓▓ ▓▓   ▓▓▓  ▓▓▀▓▓ █▓▓▓
  ◥◣  ▓▓█ ▓▓ ▓▓  ▓▓▓ ◥◣▓  ▌▓▓▓▓  ◢◤  ▓▓▓  ▓▓ ▓▓ █▓▓▓
 ▲ ◥▅▓▓█ ▓▓ ▃▅▇▀▀▀▀▆▅▃            ▃▅▆▀▀▀▀▇▅▃ ▓▓ █▓▓▓
  ▀▅▃▓▓█ ▓▓◥█▀ ◢▇█▇◣                  ◢▇█▇◣ ▀█◤▓▓ █▓▓▓
    ◢█▓█ ██ ▼ ▐▓██▓▍               ▐▓██▓▍ ▼ ██ █▓█▓
   ◢◤█▓█ ██     ◥▓▓▓◤                ◥▓▓▓◤     ██ █▓█▓
  ◢▀▀█▓█ ██▌   ◥▅▃▂▂▂▃◢◤          ◥◣▃▂▂▂▃▅◤   ▐██ █▓█▓
     █▓█▍███                                  ███ █▓█▓
    █▓▓█▐███.               ◢▋                ███▎█▓▓█▓
   █▓▓▓▋████                                ███▋█▓▓▓█▓
▲▃█ ▓▓▓█████▌        ◥▅▅▆▇▇▇▇▇▆▅▅◤         ▐█████▓▓▓ █▓
 ▓▉ ▓▌▓██████◣         ▼        ▼          ◢██████▓▌▓ ▐▓
 ▓▌  ▓▋▓█████ ▀▃        ◥◣        ◢◤        ▃▀ █████▓▋▓  ▼
 ▼   ▓▊▓████▌  ▀▅        ◥◣▃▂▂▃◢◤        ▅▀  ▐████▓▊▓
     ▼▋▓████     ◥█▅▃                ▃▅█◤     ████▓▋▼


...そんな訳でして、以下を追加してやれば無事書式変更を行うことが出来ました。
DTM_SETFORMATW
1
2
3
4
#if (DTM_SETFORMATW == 0x1050)
    #undef DTM_SETFORMATW
    #define DTM_SETFORMATW 0x1032
#endif     

Copyright(C) 2007-2025 Frost Moon Project


Home > Tips > MinGWでDTM_SETFORMATを送っても書式変更が行われない場合の対処法