文書番号: 402027
最終更新日: 2004/04/27
// メッセージマップへの登録 BEGIN_MESSAGE_MAP(CComcomView, CEditView) : ON_MESSAGE(WM_COMMNOTIFY,OnCommMessage) : END_MESSAGE_MAP() // WM_COMMNOTIFY 時の処理 afx_msg LRESULT CComcomView::OnCommMessage(WPARAM wParam, LPARAM lParam) { unsigned int i; char buff[256]; COMSTAT FAR lpStat; GetCommError(idComDev, &lpStat); // 受信文字数の取得 ReadComm(idComDev,(char far *)buff,lpStat.cbInQue ); // 読み込み for (i = 0 ; i < lpStat.cbInQue ; i++ ) { PostMessage(WM_CHAR,buff[i],0L); // View への書き込み } GetCommEventMask(idComDev, EV_RXCHAR); // イベントのリセット return 0; }
int CComcomView::OnCreate(LPCREATESTRUCT lpCreateStruct) { int err; if (CEditView::OnCreate(lpCreateStruct) == -1) return -1; idComDev = OpenComm("COM1", 1024, 128); // 回線のオープン if (idComDev < 0) { AfxMessageBox("OpenComm Error"); return 0; } err = BuildCommDCB("COM1:9600, n, 8, 1", &dcb); // 回線情報の取得 if (err < 0) { AfxMessageBox("BuildCommDCB Error"); return 0; } err = SetCommState(&dcb); // 回線情報のセット if (err < 0) { AfxMessageBox("SetCommState Error"); return 0; } SetCommEventMask(idComDev,EV_RXCHAR); // イベントのセット if(0 == EnableCommNotification(idComDev,m_hWnd,-1,-1))// 通信割込みの開始 { AfxMessageBox("EnableCommNotification Error"); return 0; } return 0; } void CComcomView::OnClose() // 回線終了処理 { CloseComm(idComDev); CEditView::OnClose(); } void CComcomView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) // 受信処理 { WriteComm(idComDev,(char far *)&nChar,1); CEditView::OnChar(nChar, nRepCnt, nFlags); }
Keywords: KBHOWTO VC10 VC15 KB402027
Technology: kbAudDeveloper kbvc150 kbVCsearch