VC'05
リソースエディタでダイアログを組んでいて、Date Time Picker(日付か時刻を扱うコ
ントロール)と言うものを使ったんですが、データの操作が思うように出来ません。
[2006/01/01▼](ボタン押せばカレンダーが出る)とか[12:34:56◆](スピン)とか表示さ
れて、各区切られた数字毎にフォーカスが当たるようになっているものです。
コントロールは標準で生成された日時,時刻がセットされています。
GetDlgItemText()でデータの文字列は取得出来ましたが、コントロールにデータをセッ
トすることが出来ませんでした。
何か方法はあるでしょうか?
CXXDlg : public CDialog {
...
CDateTimeCtrl dtc;
};
BOOL CXXDlg::OnInitDialog() {
...
CTime tm(2006,5,6,7,8,9); // 2006/05/05, 07:08:09
dtc.SetTime(&tm); // に設定
return TRUE;
}
多分、MFCを使っているとして、
コントロールに対応するメンバー変数を追加して
επιστημηさんが書かれている方法を使うのが
一般的だと思います。
簡単な制御ならCDialog::GetDlgItemXX系で対応できますが、
目新しいコントロールを使うような場合は直接コントロールに
対して制御する事の方が多くなりますし、融通もききます。
メンバー変数でコントロール変数を作成すれば、
出来るので試して見てはどうでしょう。
この場合、各コントロールに対応するMFCのクラスについては
HELP(MSDN)でどんなメソッドがあるのかを調べて使い方を
研究して見てください。
>多分、MFCを使っているとして、
MFCは使っていません、使った事がありません。
なので、クラスについては調べてみましたが、未だ試せていません。
使わなければ出来ませんか?或いは使うべきでしょうか。
MFC未使用なら
DateTime_GetSystemtime
DateTime_SetSystemtime
あたりを調べてみてください。
> 使わなければ出来ませんか?
そんなことはない。
MFCだってその腹ん中でWin32API呼んでるだけだから。
> 或いは使うべきでしょうか。
楽するための苦労を厭わないなら、知ってて損はありません。
できれば、最初にMFCは使っていないことを書いてください。
MFCを使っているかどうかでかくないようが変わってきます。
επιστημηさんも書かれていますが、
MFCも中ではWin32APIを使っていますから、出来ない事は無いと思います。
ただ、MFCを使うとコード量が減るので楽が出来るというだけです。
Windowsプログラミングの勉強を目的にWin32APIだけで組む事自体は
Windowsの仕組みを理解するには良いとこだと思うのでそれはそれでしょう。
仕組みを理解できているのであれば、MFCを使うと既にわかりきった部分の
ソースを書かなくて済むので楽はできると思います。
この辺は選択肢として用意されているという話なのでどちらでも構わないと思います。
ただ、仕事でやる場合は発注元から指定があったりすることもあるので
両方出来るに越した事は無いと思います。
趣味でやっている分にはそれこそ好みの問題で片付くと思いますけれど。
回答ありがとうございます、解決しました。
あと助言ありがとうございます。
> Windowsプログラミングの勉強を目的にWin32APIだけで組む事自体は
> Windowsの仕組みを理解するには良いとこだと思うのでそれはそれでしょう。
目的は勉強です。実際にWin32APIを使って制作をするのはほぼ初めてです。
これからその仕組みを学んで行こうとしている段階です。
> 仕組みを理解できているのであれば、MFCを使うと既にわかりきった部分の
> ソースを書かなくて済むので楽はできると思います。
ある程度仕組みを理解してから、今後そのMFCも使える様にしたいと思います。
> できれば、最初にMFCは使っていないことを書いてください。
以後気を付けます。