settime问题?
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define size 20
#define Arinc429_BaseAddr 0x200
void CALLBACK OnReadHDGData(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
CHDGDlg* pDlg = (CHDGDlg*)dwUser;
if (pDlg == NULL || !pDlg->IsKindOf(RUNTIME_CLASS(CDialog)))
return;
if(uID == pDlg->m_SndTimer)
{
pDlg->OnRdHDGData();
return;
}
}
CHDGDlg::CHDGDlg(CWnd* pParent /*=NULL*/)
: CDialog(CHDGDlg::IDD, pParent)
{
m_SndTimer = 0;
m_HdgMsg = _T("");
}
void CHDGDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CHDGDlg)
DDX_Text(pDX, IDC_HDGMSG, m_HdgMsg);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CHDGDlg, CDialog)
//{{AFX_MSG_MAP(CHDGDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CHDGDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CenterWindow();
GetDlgItem(IDC_HDGMSG)->SetWindowText(m_HdgMsg);
m_SndTimer = timeSetEvent(500,0,OnReadHDGData,(DWORD)this,TIME_PERIODIC);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CHDGDlg::OnRdHDGData()
{
CString str;
UINT DataField;
UINT AriRxLabel;
float HDGfloat=0.0;
int AriDataArray[size];
Arinc429_RX(Arinc429_BaseAddr, AriDataArray);
for(int i = 0 ; i < size; i++)
{
AriRxLabel = AriDataArray[i] & 0x000000FF;
switch(AriRxLabel)
{
case 0x82: // 101 HDG
if((AriDataArray[i]>>29)&0x3 == 3)
{
if((AriDataArray[i]>>28)&0x01 == 1)
{
DataField = (AriDataArray[i] >> 16) & 0xfff;
HDGfloat = float (180/pow(2,12) *(DataField - pow(2,12)) + 360.0);
str.Format("%.1f",HDGfloat);
}
else
{
DataField = (AriDataArray[i] >> 16) & 0xfff;
HDGfloat = float(180/pow(2,12) * DataField);
str.Format("%.1f",HDGfloat);
}
}
break;
default:
break;
}
GetDlgItem(IDC_HDGVAL)->SetWindowText(str);
}
}
void CHDGDlg::OnOK()
{
// if(m_SndTimer)
timeKillEvent(m_SndTimer);
CDialog::OnOK();
}
void CHDGDlg::OnCancel()
{
// if(m_SndTimer)
timeKillEvent(m_SndTimer);
CDialog::OnCancel();
}
这个代码老是内存出错,把GetDlgItem(IDC_HDGVAL)->SetWindowText(str)注销掉问题就没有了。不知道怎么解决?