DateTimePicker的类是这样的:
class CDTPickerImpl : public CWindowImpl<CDTPickerImpl>
{
public:
DECLARE_WND_SUPERCLASS(TEXT("DATETIMEPICKER"), DATETIMEPICK_CLASS) BEGIN_MSG_MAP(CDTPickerImpl)
END_MSG_MAP() CDTPickerImpl();
virtual ~CDTPickerImpl();
};
然后在另一个窗口中创建:
CAxWindow m_wndDTPContainer;
void CCNRToolbarImpl::AddDTPicker(RECT& rect)
{
AtlAxWinInit();
CComPtr<IAxWinHostWindow> spHost;
CComPtr<IConnectionPointContainer> spConnectionContainer;
// CComWMPEventDispatch *pEventListener = NULL;
CComPtr<IWMPEvents> spEventListener;
HRESULT hr;
// RECT rcClient;
m_dwAdviseCookie = 0;
m_wndDTPContainer.Create(m_hWnd, rect, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, NULL);
hr = m_wndDTPContainer.QueryHost(&spHost); hr = spHost->CreateControl(CComBSTR(_T("{20dd1b9e-87c4-11d1-8be3-0000F8754da1}")), m_wndDTPContainer, 0);
}
获得DateTimePicker的值这样做的:
SYSTEMTIME st;
if (GDT_VALID == DateTime_GetSystemtime(m_wndDTPContainer.m_hWnd,&st))
{
sprintf(buff,"%d-%d-%d",st.wYear,st.wMonth,st.wDay);
//最后得到的值不正确,
}请各位帮忙分析一下
class CDTPickerImpl : public CWindowImpl<CDTPickerImpl>
{
public:
DECLARE_WND_SUPERCLASS(TEXT("DATETIMEPICKER"), DATETIMEPICK_CLASS) BEGIN_MSG_MAP(CDTPickerImpl)
END_MSG_MAP() CDTPickerImpl();
virtual ~CDTPickerImpl();
};
然后在另一个窗口中创建:
CAxWindow m_wndDTPContainer;
void CCNRToolbarImpl::AddDTPicker(RECT& rect)
{
AtlAxWinInit();
CComPtr<IAxWinHostWindow> spHost;
CComPtr<IConnectionPointContainer> spConnectionContainer;
// CComWMPEventDispatch *pEventListener = NULL;
CComPtr<IWMPEvents> spEventListener;
HRESULT hr;
// RECT rcClient;
m_dwAdviseCookie = 0;
m_wndDTPContainer.Create(m_hWnd, rect, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, NULL);
hr = m_wndDTPContainer.QueryHost(&spHost); hr = spHost->CreateControl(CComBSTR(_T("{20dd1b9e-87c4-11d1-8be3-0000F8754da1}")), m_wndDTPContainer, 0);
}
获得DateTimePicker的值这样做的:
SYSTEMTIME st;
if (GDT_VALID == DateTime_GetSystemtime(m_wndDTPContainer.m_hWnd,&st))
{
sprintf(buff,"%d-%d-%d",st.wYear,st.wMonth,st.wDay);
//最后得到的值不正确,
}请各位帮忙分析一下
请看一下我创建DateTimePicker时的代码,是先生成了一个Host窗口,然后通过CreateControl生成的DTPicker控件,所以我不知道怎么得到DateTimePicker的句柄,如果能得到句柄的话,我这样做就应该能得到正确的值了。所以我认为解决方法是要么得到DateTimePicker的句柄,要么用另外一种方法创建DateTimePicker