こんばんは、目的の内容かどうかはわかりませんが...
コントロールがメインウィンドウにあるというのを前提に説明します。
ざっとかいてみましたが参考にしてください。(AB4.24で実施)
※そちらの「hDate1」に対するコードのみを提示いたしました。
日付を選択したとたんにEditBoxへ結果を表示します。
1.EditBox(EditBox1)をメインウィンドウに1個配置してください。(テスト用)
2.グローバル領域に以下の構造体などを定義します。
コード:
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Type NMDATETIMECHANGE
nmhdr As NMHDR
dwFlags As DWORD
st As SYSTEMTIME
End Type
Const DTN_FIRST = (-760)
Const DTN_DATETIMECHANGE = (DTN_FIRST + 1)
Dim DTPInfo As NMDATETIMECHANGE
2.「MainWndProc」に以下のコードを書き込みます。
コード:
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
Select Case dwMsg
Case WM_NOTIFY
'送られてきたlParamの内容を「DTPInfo」へコピーする
memcpy(VarPtr(DTPInfo),lParam,Len(DTPInfo))
'日付時刻の変更通知ならば...
If DTPInfo.nmhdr.code = DTN_DATETIMECHANGE Then
'送信元が「hDate1」ならば...
If DTPInfo.nmhdr.hwndFrom = hDate1 Then
Dim temp[100] As Byte
wsprintf(temp, "選択された日付:%04d/%02d/%02d" ,DTPInfo.st.wYear, DTPInfo.st.wMonth , DTPInfo.st.wDay)
'メインウィンドウのEditBox1へ結果を表示する
SetDlgItemText(hMainWnd,EditBox1,temp)
End If
End If
Exit Function
End Select
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
日付・時刻の数値データ(年・日・分・秒など)は「DTPInfo.st」の中にさらに格納されてます。これはSYSTEMTIME構造体なので、SYSTEMTIME構造体関連の情報で確認してください。