時刻の日時指定コントロールで実行エラー

このQ&Aのポイント
  • MFCでwindowsアプリケーションを勉強しているものです。日時指定コントロールで、日付や時刻を選択する参考書サンプルを動かそうとしていますが、時刻のDate Time Pickerのスピンコントロールを動かすとエラーが表示されます。
  • コントロールのプロパティは、IDC_DATETIMEPICKER4というID、時間のフォーマット、スピンコントロールの使用がありますが、エラーの原因や解決策がわかりません。
  • イベントハンドラコードでは、選択した時刻を取得し、文字列フォーマットに変換して表示する処理が行われています。しかし、正常に動作しないため、解決方法を教えてほしいという質問です。
回答を見る
  • ベストアンサー

時刻の日時指定コントロールで実行エラー

時刻の日時指定コントロールで実行エラー MFCでwindowsアプリケーションを勉強しているものです。 OS : Vista Premium VS : 2008 Pro 日時指定コントロールで、日付や時刻を選択する参考書サンプルを動かそうとしています。 結果は、 時刻のDate Time Pickerのスピンコントロールを動かすとエラーが表示されます。 添付画像にあるエラー表示内の 'File: f:\dd\vctools\crt_bld\self_x86\crt\src\output.c ' というファイルは、 C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\ にあるoutput.cのことでしょうか? そうだとしても、今の私のスキルでは解読することができません。 この時刻のコントロールのプロパティは、以下のように設定しました。 ID : IDC_DATETIMEPICKER4 Format : 時刻 Use Spin Control : True ( 淡色表示になっている ) その他は、デフォルト値です。 このコントロールのイベントハンドラコード部分 void CDateTimeCtrlDialog::OnDtnDatetimechangeDatetimepicker4(NMHDR *pNMHDR, LRESULT *pResult) {     LPNMDATETIMECHANGE pDTChange = reinterpret_cast<LPNMDATETIMECHANGE>(pNMHDR);     // TODO: ここにコントロール通知ハンドラ コードを追加します。     CTime ct;     m_MonthCal4.GetTime( ct );     m_strDate4.Format( L"%02d:%02d:%02" , ct.GetHour() , ct.GetMinute() , ct.GetSecond() );     UpdateData( false );     *pResult = 0; } どなたか教えてください。 お願いします。

  • brosis
  • お礼率94% (100/106)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちわ。 > C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\ > にあるoutput.cのことでしょうか? はい。それのことです。 画像の例外は、ST_NORMAL または ST_TYPE のどちらかのフラグがセットされていなければならないのに、そうなってないために発生しているエラーです。 output.c というのは、printf系の出力の内部処理なので、貴方の Format(L".. に記述ミスがあるということです。そして、ST_TYPE は、printf書式の最後の、c、s、d、i、o、u、x 等の書式のことを言っています。 "%02d:%02d:%02" の一番最後に "d" とか付いている必要があるのではありませんか?

brosis
質問者

お礼

>ST_TYPE は、printf書式の最後の、c、s、d、i、o、u、x 等の書式のことを言っています。 そうだったんですね。 エラーの内容に面食らって、ソースを調べることをしていませんでした。 しかし、'ST_TYPE'が何か?というところまで行き着くには、時間がかかったと思います。 お手数をお掛けしました。 本当にありがとうございました。

関連するQ&A

  • VC++6.0 MFC 日時指定コントロールの秒へのセットフォーカス

    VC++6.0 MFC 日時指定コントロールの秒へのセットフォーカス 以下の環境でプログラミングを実施しています。 開発環境:Visual Studio 6.0 言語:Visual C++ プロジェクト:MFCアプリケーション 日時指定コントロールのスピンを最初にクリックすると 時間が変化しますが、これを初期設定で秒にしたいのですが どうしたらいいのか全くわかりません。 教えてください!

  • [コントロールパネル⇒…⇒]日付と時刻の調整]

    Win10 Pro のデスクトップ機を使用しています。 タスクバー上の右側にある日時表示の[時計を右クリック]して[日付と時刻の調整]を選択すると、 > 時刻を自動的に設定する > タイムゾーンを自動的に設定する という2つのスイッチが表示されます。 [日付と時刻の調整]は[コントロールパネル]からも行えるはずですが、[コントロールパネル]⇒[時計、言語、および地域]からどういう手順で辿ればその2つのスイッチに行き当たりますか? 教えてください。

  • 日時や時刻を指定し、その時間にメッセージを表示させる方法、、、

    Visual Basic 6.0 を始めたばかりの者です。 「日時や時刻を指定し、その時間になったら  あらかじめ指定したメッセージを表示させる」 というプログラムを作ろうとしています。 自分なりに考えたのは次のような方法です。 1.Year、Month、Day、Hour、Minute関数で、今日の年月日と時刻を得て  変数に入れる。 2.コンボボックスに「2003」などの数値を入れておき、  メッセージを表示させたい年月日と時刻を選択させる。  指定された年、月、日、時間、分はそれぞれ変数に入れる 4.「設定」ボタンを押す。 3.IF関数を使い、1.と2.の変数が全部一致したら、  メッセージボックスなどを出してメッセージを表示。 If (指定したYear = 今日のYear) And _ (指定したMonth = 今日のMonth) And _ (指定したDay = 今日のDay) And _ (指定したHour = 今日のHour) And _ (指定したMinute = 今日のMinute) Then テキストボックス = "定められたメッセージを表示する" End If ここで行き詰まってしまいました。 タイマーコントロールを使うのかな?とは思うのですが、 どのようにして使えば良いのか判りません。。。 1.の段階で既に間違っているのでしょうか。 タイマーコントロールを使って、今日ではなく「今現時点の」 年月日と時刻を得る必要があるのでしょうか、、、? 恐らく簡単な事なのかも知れませんが、判りやすく教えて戴けると幸いです。 宜しくお願い致します。

  • 日付と時刻のプロパティでエラー

    コントロールパネルの、日付と時刻のプロパティのインターネット時刻のタブで、自動的にインターネット時刻サーバーと同期するってところにチェックを入れて、今すぐ更新をクリックすると、お待ち下さいと表示された後にエラーと表示されます。どうしてでしょうか? その時は8分くらいずれてたんで、しかたなくSKRWATCHで修正しました。

  • リストコントロールのリスト内にスピンコントロールを配置したい

    お世話になります。 C++ 6.0 MFC で開発しております。 リストコントロール内に表示させるリスト内にスピンコントロールをつけたいのですが、どのようにすれば実現できるのでしょうか? ※リストを追加するたび、スピンコントロールがついたリストが追加されるようにしたいのです。 説明が載っているサイトでもいいので教えて頂ければありがたいですので なにとぞよろしくお願いします。 お手数ですが、なにとぞよろしくお願いします。

  • リストコントロールのデータの変更を検知したい

    リストコントロールのデータの変更時に呼び出されるイベントが分かりません、 OnLvnItemchangedList()であっているのでしょうか?もっと簡単に実現できるのなら、 教えてください。 VC++2010 MFC です。 削除のときは、条件なしに、OnLvnDeleteitemList()内でいいのですが、 追加も pNMLV->uChanged == 4 にすれば問題ないです。でもその他は、厳しくしすぎると クリックしただけで、データが変更されたと判断されたり、・・・でうまく行きません。 【リスト上のデータが変更されるケース】 データが変更される場合は、非選択状態から「すべてを置換」するケースや 一個一個 検索(選択)しながら、「置換」するケースがあります。 後は、リストコントロールにエディットボックスを張り付かせて、「編集」(エンターで確定) して、データを変更するケースがあります。 ただし、「すべてを置換」する場合でも、既に選択状態のデータを処理する場合もあり、困っています。 自分で作ったプログラムなのですから、各機能終了時に変更されたか?されてないか?は 分かっているのですが、勉強のため、質問をしました。 PreTranslateMessage()で出来るのでしょうか? (参考サイト: http://isobe.exblog.jp/996027/ ) 【目的】 起動時 から(前回保存時から)リストデータに変化がない場合、何もせずに終了したい 【やりたいこと】 リストの文字が変わったら、キャプションを FileListCreator(*) にすると ともに、ListDataNoChange_FLG = FALSE; にする。 保存ややリカバリ(復帰)を行ったら (*) を取って、 ListDataNoChange_FLG = TRUE; にする。 if ( ListDataNoChange_FLG == TRUE ) //保存処理をスキップする。 【できれば】 あとは、pNMLV->uChanged などの 4とか8とか、定数で記述したいです。 lParamが何を意味しているか?分からないです。教えて下さい。 void CFileListCreatorDlg::OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult) {   LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);   // TODO: ここにコントロール通知ハンドラー コードを追加します。   if (( pNMLV->uChanged == 4 && pNMLV->uNewState == 0 && pNMLV->uOldState == 0 ) //リストコントロールにアイテムが追加した時     || ( pNMLV->uChanged == 8 && pNMLV->uNewState == 3 && pNMLV->uOldState == 0)){ //「すべてを置換」「置換」ボタンを押した時 //「検索」ボタンで検索しただけでも選択状態になる     //|| ( pNMLV->uChanged == 8 && pNMLV->uNewState == 0 && pNMLV->uOldState == 1 )     //|| ( pNMLV->uChanged == 8 && pNMLV->uNewState == 0 && pNMLV->uOldState == 2 )     //|| ( pNMLV->uChanged == 8 && pNMLV->uNewState == 0 && pNMLV->uOldState == 3 )){     ListDataNoChange_FLG = FALSE;//追加 2012.05.13          CFileListCreatorDlg* m_Dlg = (CFileListCreatorDlg*)AfxGetMainWnd();     if( (m_Dlg==NULL)||(m_Dlg->GetSafeHwnd()==NULL) ){       return;     }     m_Dlg->SetWindowText(_T("FileListCreator (*)"));   }   //CString tempStr;   //tempStr.Format(_T("OnLvnItemchangedList iItem: %d, lParam: %d, uChanged: %d, uNewState: %d, uOldState: %d\n"), pNMLV->iItem, pNMLV->lParam, pNMLV->uChanged, pNMLV->uNewState, pNMLV->uOldState);   //MessageBox(tempStr);   *pResult = 0; } void CFileListCreatorDlg::OnLvnDeleteitemList(NMHDR *pNMHDR, LRESULT *pResult) {   LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);   // TODO: ここにコントロール通知ハンドラー コードを追加します。   ListDataNoChange_FLG = FALSE;//追加 2012.05.13   CFileListCreatorDlg* m_Dlg = (CFileListCreatorDlg*)AfxGetMainWnd();   if( (m_Dlg==NULL)||(m_Dlg->GetSafeHwnd()==NULL) ){     return;   }   m_Dlg->SetWindowText(_T("FileListCreator(*)"));   *pResult = 0; } ご教授下さい。

  • WindowsUpdateにてエラー。時刻設定?

    初心者でOSはWindowsXPです。 WindowsUpdateにて更新をスキャンすると、エラーが出て、コンピュータの時刻は正確かと聞かれます。画面右下の時間表示の部分をダブルクリックして確認すると、日時は合っています。 エラー表示の内容から何か考えられる原因はありますでしょうか? アドバイスよろしくお願い致します。

  • 時刻が狂います

    マックOS8.6を使ってます(G3)時刻をなんど設定しなおしても、1950年の8月6日とか、脈絡のない日時が表示されてしまいます。で最近システムエラーや、リソースが不足していますなどのメッセージもよくでるのですが、ウイルスでしょうか?

    • ベストアンサー
    • Mac
  • CTreeCtrlでアイコンが変化しない

    環境は、MSVC++6.0&MFCです。 やりたいことは、ツリーコントロールのアイコンをエクスプローラのフォルダのように、 開いたときと閉じたときとで、アイコンを変化させたいのです。 以下は、ソースです。 CTreeCtrlからMyTreeCtrlを派生しています。 テスト用に開いたときは、文字列を"開いた"、閉じたときは、"閉じた"のように変化させるようにしています。 void MyTreeCtrl::OnItemexpanded(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; if(pNMTreeView->action == TVE_EXPAND){ SetItemState(pNMTreeView->itemNew.hItem , INDEXTOSTATEIMAGEMASK(0) , TVIS_STATEIMAGEMASK); SetItemText(pNMTreeView->itemNew.hItem , "開いた"); }else{ SetItemState(pNMTreeView->itemNew.hItem , INDEXTOSTATEIMAGEMASK(1) , TVIS_STATEIMAGEMASK); SetItemText(pNMTreeView->itemNew.hItem , "閉じた"); } *pResult = 0; } 実行すると、文字は、開いたときは、"開いた"、閉じたときは、"閉じた"とちゃんと表示されますが、 アイコンが変化しません。 お分かりの方、いらっしゃいましたら、教えてください。

  • エクスプローラーのファイル更新日時が大幅にずれる

    NextFTPでファイルをローカルPCにダウンロードした際、下記の現象が発生します。 ファイルのプロパティーで更新日時を確認すると、更新日時は正常に表示されているのに、 エクスプローラーで確認すると、更新日時が実際の更新日時より1年前にずれています。 コントロールパネルで設定する時刻と、BIOSの時刻設定を調べたのですが、とちらも現在の時刻との誤差もなく設定されておりました。 いったい何が問題なのかさっぱり解りません。 改善策は無いものでしょうか。 環境は以下です。 OS:winXP pro Version2002 SP3 FTPソフト:NEXTFTP Ver4.85