Может кто-нибудь сказать мне, когда будет запущено событие OnTimer?(плохо знаком с VC ++) (извините за неправильное форматирование)
enter code here
// iSCSIDlg.h: заголовочный файл
определение WM_RECVDATA WM_USER + 1
класс CISCSIDlg: общедоступный CDialog{public: bool m_testrand;bool m_ack;bool m_testProc;BOOL m_isConnect;BOOL InitSocket ();CISCSIDlg (CWnd * pParent = NULL);статический DWORD WINAPI RecvProc (LPVOID lpParameter);
статический DWORD WINAPI send_test (LPVOID lpParameter);
protected:
virtual void DoDataExchange(CDataExchange* pDX);
защищен: afx_msg void OnTimer (UINT nIDEvent);DECLARE_MESSAGE_MAP ()
};
class CAboutDlg: public CDialog {public: CAboutDlg ();enum {IDD = IDD_ABOUTBOX};защищенный: виртуальный пустой DoDataExchange (CDataExchange * pDX);
защищенный: DECLARE_MESSAGE_MAP ()};
CAboutDlg :: CAboutDlg (): CDialog (CAboutDlg :: IDD) {}
void CAboutDlg :: DoDataExchange (CDataExchange * pDX) {CDialog :: DoDataExchange (pDX);}
BEGIN_MESSAGE_MAP (CAboutDlg, CDialog)
END_MESSAGE_MAP ()
CISCSIDlg :: CISCSIDlg (CWnd * pParent): CDialog (CISCSIDlg :: IDD, prarent)0;m_cmd = -1;m_param1 = 0;m_hIcon = AfxGetApp () -> LoadIcon (IDR_MAINFRAME);}
void CISCSIDlg :: DoDataExchange (CDataExchange * pDX) {CDialog :: DoDataExchange (pDX);DDX_Control (pDX, IDC_BTN_CONNECT, m_btnConnect);DDX_Control (pDX, IDC_BTN_SEND, m_btnSend);DDX_Text (pDX, IDC_EDIT_PORT, m_srvPort);DDX_Radio (pDX, IDC_RADIO0, m_cmd);DDX_Text (pDX, IDC_EDIT1, m_param1);}
тысяча тридцать-одна * BEGIN_MESSAGE_MAP (CISCSIDlg, CDialog) ON_WM_SYSCOMMAND () ON_WM_PAINT () ON_WM_QUERYDRAGICON () ON_BN_CLICKED (IDC_BTN_CONNECT, OnBtnConnect) ON_BN_CLICKED (IDC_BTN_SEND, OnBtnSend) ON_BN_CLICKED (IDC_RADIO0, OnRadio) ON_WM_TIMER () ON_MESSAGE (WM_RECVDATA, OnRecvData) END_MESSAGE_MAP()
BOOL CISCSIDlg :: OnInitDialog () {CDialog :: OnInitDialog ();CMenu * pSysMenu = GetSystemMenu (FALSE);if (pSysMenu! = NULL) {CString strAboutMenu;strAboutMenu.LoadString (IDS_ABOUTBOX);if (! strAboutMenu.IsEmpty ()) {pSysMenu-> AppendMenu (MF_SEPARATOR);pSysMenu-> AppendMenu (MF_STRING, IDM_ABOUTBOX, strAboutMenu);}} UpdateData (FALSE);GetDlgItem (IDC_EDIT1) -> ShowWindow (SW_HIDE);GetDlgItem (IDC_EDIT2) -> ShowWindow (SW_HIDE);вернуть ИСТИНА;}
void CISCSIDlg :: OnSysCommand (UINT nID, LPARAM lParam) {if ((nID & 0xFFF0) == IDM_ABOUTBOX) {CAboutDlg dlgAbout;dlgAbout.DoModal ();} else {CDialog :: OnSysCommand (nID, lParam);}}
void CISCSIDlg :: OnPaint () {
}
HCURSOR CISCSIDlg :: OnQueryDragIcon () {return (HCURSOR) m_hIcon;}
DWORD WINAPI CISCSIDlg :: RecvProc (LPVOID lpParameter) {SOCKET sock = ((RECVPARAM *) lpParameter) -> sock;HWND hwnd = ((RECVPARAM *) lpParameter) -> hwnd;удалить lpParameter;
unsigned char recvBuf[1500];
unsigned char tempBuf[1500];
int retval;
while(TRUE)
{
memset(recvBuf,0,sizeof(recvBuf));
retval=recv(sock,(char *)recvBuf,1500,0);
memcpy(tempBuf,recvBuf,1500);
::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)tempBuf);
}
return 0;
}
void CISCSIDlg :: OnRecvData (WPARAM wParam, LPARAM lParam) {
CTime time=CTime::GetCurrentTime();
if(msg[12]==0)
{
}
else
{
send(m_socket,(char*)tmp_buf,32,0);
}
if(msg[12]==0 && m_testProc)
{
SetDlgItemText(IDC_ERR,temp);
}
else
if(msg[12]==0 && m_testrand)
{
}
else
if(m_testProc || m_testrand)
m_ack=true;
}
void CISCSIDlg :: OnBtnConnect() {
}
void CISCSIDlg :: OnBtnSend () {
send(m_socket,(char*)msg_header,cmdSize+16,0);//kh 2
}
void CISCSIDlg :: OnTimer (UINT nIDEvent) {
if(nIDEvent==1)
{
timeout--;
if(timeout<0)
{
KillTimer(1);
flag_test_ready=0;
AfxMessageBox("xxx");
}
}
if(nIDEvent==2)
{
unsigned char testBuf[100];
int testSize=16;
memset(testBuf,0,sizeof(testBuf));
testBuf[0]=0xa5;
if(m_testrand && m_isConnect )
{
if(m_ack)
{
m_ack=false;
unsigned char msg_header[16+100];
send(m_socket,(char*)msg_header,16+testSize,0);
CString toShow,temp;
CTime time=CTime::GetCurrentTime();
toShow.Format("rand:%2d:%2d:%2d cmd(%2x):--",time.GetHour(),time.GetMinute(),time.GetSecond(),testBuf[0]);
for( i=0;i<testSize+16;i++)
{
temp.Format(" %2x",msg_header[i]);
toShow+=temp;
if(i%8==7)
{
((CListBox*)GetDlgItem(IDC_LIST_MSG))->InsertString(0,toShow);
toShow.Empty();
toShow.Format("rand:%2d:%2d:%2d cmd(%2x):--",time.GetHour(),time.GetMinute(),time.GetSecond(),testBuf[0]);
}
}
if(i%8!=0)
((CListBox*)GetDlgItem(IDC_LIST_MSG))->InsertString(0,toShow);
}
}
}
CDialog::OnTimer(nIDEvent);
}