Start 메소드로 갑니다. 아까 다이얼로그에서 더블클릭해서 생긴 함수죠,
제가 만든건 void CMFC_Dot_MatrixDlg::OnBnClickedStart() 이렇게 되어있군요.
void CMFC_Dot_MatrixDlg::OnBnClickedStart()
{
SetTimer(1, 20, NULL);
}
이렇게 만들어줍니다.
그리고 아래 onTimer 메소드를 찾아가봅니다. 온타이머는 아까 SetTimer로 설정한 20 이라는 시간 마다 실행되는 함수 입니다.
void CMFC_Dot_MatrixDlg::OnTimer(UINT_PTR nIDEvent)
{
if(m_drag == true)
{
CDC *pNewDC = GetDC();
CPen hpen, *hpenOld;
hpen.CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
hpenOld = pNewDC->SelectObject(&hpen);
for(int i=0; i<9; i++)
pNewDC->MoveTo(i*55+10, 45), pNewDC->LineTo(i*55+10, 485);
for(int i=1; i<10; i++)
pNewDC->MoveTo(10, i*55-10), pNewDC->LineTo(450, i*55-10);
pNewDC->SelectObject(hpenOld);
hpen.DeleteObject();
CBrush *brOld, Brush;
switch(LED_COLOR){
case 0: Brush.CreateSolidBrush(RGB(240, 240, 240));
brOld = pNewDC->SelectObject(&Brush); break;
case 1: Brush.CreateSolidBrush(RGB(255, 0, 0));
brOld = pNewDC->SelectObject(&Brush); break;
case 2: Brush.CreateSolidBrush(RGB(0, 255, 0));
brOld = pNewDC->SelectObject(&Brush); break;
case 3: Brush.CreateSolidBrush(RGB(255, 255, 0));
brOld = pNewDC->SelectObject(&Brush); break;
case 4: Brush.CreateSolidBrush(RGB(rand(), rand(), 0 ));
brOld = pNewDC->SelectObject(&Brush); break;
}
for(int i=0; i<8; i++)
if(m_point.x > i*55+10 && m_point.x < (i+1)*55+10)
for(int j=1; j<9; j++)
if(m_point.y > j*55-10 && m_point.y < (j+1)*55-10)
{
pNewDC->Rectangle(i*55+10, j*55-10, (i+1)*55+11,(j+1)*55-9);
RS232_DATA &= ~(0x07)<<3;
RS232_DATA |= i<<3;
RS232_DATA &= ~(0x07);
RS232_DATA |= (j-1);
RS232_Comm(RS232_DATA);
}
pNewDC->SelectObject(brOld);
Brush.DeleteObject();
ReleaseDC(pNewDC);
}
CDialog::OnTimer(nIDEvent);
}
휴 .. 소스가 기네여..
드래그가 된 상황이라면 격자를 그리고 스위치 문에서 현재 누른 버튼의 컬러정보를 가지고 내부에 사각형을 그리기 전에 색깔을 선택하게 되는 부분이며
아래쪽 2중 포문과 2중 조건문에서는 마우스 포인트의 좌표를 가지고 여기가 여기군.. 이렇게 해석한다음에 선택된 색깔을 칠해 주게 됩니다.
색을 칠해주고 보내야 하는 데이터의 비트를 Set 시켜주지요,, 쉬프트, 오아, 앤드 연산자가 쓰였습니다.
RS232_Comm( unsigned char ) 함수가 바로 데이터 송신 메소드 입니다. !!
아래의 디스트로이 메소드로 갑니다.
아까 사용하게된 타이머 1번을 없앱니다. 이 함수는 다이얼로그가 종료될때 발생됩니다.
void CMFC_Dot_MatrixDlg::OnDestroy()
{
KillTimer(1);
CDialog::OnDestroy();
}
'OpenSTUDY > openProjects' 카테고리의 다른 글
MFC Dotmatrix ver 1.1.0 (0) | 2011.10.28 |
---|---|
MFC Dotmatrix ver 1.0.3 (0) | 2011.10.28 |
MFC Dotmatrix ver 1.0.1 (0) | 2011.10.28 |
MFC Dotmatrix ver 1.0.0 (0) | 2011.10.28 |
MFC BlueTooth ver 1.3.0 (0) | 2011.10.18 |