我用以下方式在我的对话框程序中添加了状态栏:
XXXDlg.h 中:
HWND m_hStatusWindow; //加入状态栏变量的声明 XXXDlg.cpp 中:
m_hStatusWindow = CreateStatusWindow(WS_CHILD|WS_VISIBLE|WS_BORDER,
NULL, //显示在状态栏上的信息
GetSafeHwnd(), //父窗口句柄
100); //的资源ID
UINT indicators[] = {240, 330, 420, -1}; //设定间隔
::SendMessage(m_hStatusWindow, SB_SETPARTS,
sizeof(indicators) / sizeof(UINT), (LPARAM)indicators);
::SendMessage(m_hStatusWindow, SB_SETTEXT, 0, (LPARAM)TEXT("XXXX"));
::SendMessage(m_hStatusWindow, SB_SETTEXT, 1, (LPARAM)TEXT("XXXX")); 至此编译运行,状态栏已经出现在对话框底部了,随后我添加了WM_TIME消息
并在对应的处理函数中添加代码void CGOPOSDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==100)
{
CTime t1;
t1=CTime::GetCurrentTime();
::SendMessage(m_hStatusWindow,SB_SETTEXT,2,t1.Format("%H:%M:%S"));
}
CDialog::OnTimer(nIDEvent);
}编译提示OnTimer()里::SendMessage()句 cannot convert parameter 4 from 'class CString' to 'long'随后我用了(LPARAM)t1.Format("%H:%M:%S"),(LPARAM)TEXT(t1.Format("%H:%M:%S")进行转换,仍然不行我该怎么办呢?谢谢回答
XXXDlg.h 中:
HWND m_hStatusWindow; //加入状态栏变量的声明 XXXDlg.cpp 中:
m_hStatusWindow = CreateStatusWindow(WS_CHILD|WS_VISIBLE|WS_BORDER,
NULL, //显示在状态栏上的信息
GetSafeHwnd(), //父窗口句柄
100); //的资源ID
UINT indicators[] = {240, 330, 420, -1}; //设定间隔
::SendMessage(m_hStatusWindow, SB_SETPARTS,
sizeof(indicators) / sizeof(UINT), (LPARAM)indicators);
::SendMessage(m_hStatusWindow, SB_SETTEXT, 0, (LPARAM)TEXT("XXXX"));
::SendMessage(m_hStatusWindow, SB_SETTEXT, 1, (LPARAM)TEXT("XXXX")); 至此编译运行,状态栏已经出现在对话框底部了,随后我添加了WM_TIME消息
并在对应的处理函数中添加代码void CGOPOSDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==100)
{
CTime t1;
t1=CTime::GetCurrentTime();
::SendMessage(m_hStatusWindow,SB_SETTEXT,2,t1.Format("%H:%M:%S"));
}
CDialog::OnTimer(nIDEvent);
}编译提示OnTimer()里::SendMessage()句 cannot convert parameter 4 from 'class CString' to 'long'随后我用了(LPARAM)t1.Format("%H:%M:%S"),(LPARAM)TEXT(t1.Format("%H:%M:%S")进行转换,仍然不行我该怎么办呢?谢谢回答
用(LONG)(LPCTSTR)(t1.Format("%H:%M:%S))
最后一个参数不对,SendMessage最后两个参数都是32位数,你如果想传一个字符串过去,可以传这个串的地址.
谢谢 wltg2001(红猪)结帖了