프로그래밍/MFC2011. 5. 9. 09:28



1. 헤더파일에 afx_msg void OnCustomDrawList( NMHDR* pNMHDR, LRESULT* pResult ) 추가

2. cpp 파일에 ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, OnCustomDrawList)

3. void CDlg::OnCustomDrawList ( NMHDR* pNMHDR, LRESULT* pResult ) 구현

void CDlg::OnCustomDrawList ( NMHDR* pNMHDR, LRESULT* pResult )     // 리스트 데이터 글자색 변경
{
 //This code based on Michael Dunn's excellent article on
 //list control custom draw at http://www.codeproject.com/listctrl/lvcustomdraw.asp
 
 NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
 
    // Take the default processing unless we set this to something else below.
    *pResult = CDRF_DODEFAULT;
 
    // First thing - check the draw stage. If it's the control's prepaint
    // stage, then tell Windows we want messages for every item.
 if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
 {
        *pResult = CDRF_NOTIFYITEMDRAW;
 }
    else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
 {
        // This is the notification message for an item.  We'll request
        // notifications before each subitem's prepaint stage.
  
        *pResult = CDRF_NOTIFYSUBITEMDRAW;
 }
    else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
 {
  
  COLORREF clrNewTextColor, clrNewBkColor;
       
  int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec ); //row
  
  CString strTemp = m_list1.GetItemText(nItem,pLVCD->iSubItem);
  float rt_06, rate;
  
  
  switch(pLVCD->iSubItem)
  {
  case 0:
   break;
  case 1:
   break;
  case 2:
   rt_06 = atof(strTemp);
   if(rt_06 > 0)
    clrNewTextColor = RGB(255, 0, 0);
   else if(rt_06 <0)
    clrNewTextColor = RGB(0, 0, 255);
   else
    clrNewTextColor = RGB(0, 0, 0);
   pLVCD->clrText = clrNewTextColor;
   break;
  case 3:
   rate = atof(strTemp);
   if(rate > 0)
    clrNewTextColor = RGB(255, 0, 0);
   else if(rate <0)
    clrNewTextColor = RGB(0, 0, 255);
   else
    clrNewTextColor = RGB(0, 0, 0);
   
   pLVCD->clrText = clrNewTextColor;
   break;
  case 4:
   clrNewTextColor = RGB(0, 0, 0);
   pLVCD->clrText = clrNewTextColor;
   break;

  }
        *pResult = CDRF_DODEFAULT;       
 }
}

Posted by 마블(이환문)
프로그래밍/MFC2011. 4. 14. 15:20

추가된 API 이기 때문에 msimg32.lib를 라이브러리 link 탭에 연결해야 된다

'프로그래밍 > MFC' 카테고리의 다른 글

CList 글자색 변경하기  (0) 2011.05.09
GetPrivateProfileString  (0) 2011.04.11
콤보박스 다운리스트 높이 지정하기  (0) 2011.04.07
MFC 콤보박스 함수 설명  (0) 2011.04.07
MFC - debug 창에 디버깅값 출력하기  (0) 2011.03.25
Posted by 마블(이환문)
프로그래밍/MFC2011. 4. 11. 19:18

함  수  명 : GetPrivateProfileString()

 

설       명: *.ini또는 ini의 형태 파일에서 지정한 section의 string 값을 읽어온다.

종       류 :ini,inf,dll

선  언  부 :  GetPrivateProfileString( LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName )

파라미터 :  lpAppName= 색션이름

                 lpKeyName= 읽으려는 값의 이름

                 lpDefault = 지정된 값을 찾을수 없을때 반환되는 디폴트값

                 lpReturnedString = 지정한 키의 자료를 읽은 문자 스트링

                 nSize =  lpReturnedString 의 크기  또는 버퍼사이즈

                 lpFileName =ini 파일의 경로와 파일명

리턴값 :  성공하면 버퍼로 들어오는 문자의 개수, 버퍼가 작으면 -1


Posted by 마블(이환문)
프로그래밍/MFC2011. 4. 7. 14:57

MFC 리소스 편집기에서 콤보박스의 리스트크기 조절하기

① 콤보박스를 넣으면 밑처럼 나오고,

ㅁ. . . . . . . . ㅁ. . . . . . . . . .ㅁ

---------------------┌ㅡ┐ .

                                | ▼ | <-화살표(아래)버튼을 한번 클릭하면,

---------------------└ㅡ┘ .

ㅁ. . . . . . . . ㅁ. . . . . . . . . .ㅁ

 

②점선으로된 테두리가 다르게 나타고,

 

ㅁ. . . . . . . . ㅁ. . . . . . . . . .ㅁ

---------------------┌ㅡ┐ .

                                | ▼ |  .

---------------------└ㅡ┘

                                         .

                                         .

                                         .

ㅁ. . . . . . . . @. . . . . . . . . .ㅁ

                   ↑ 이곳을 드레그해서 펼쳐진 크기를 조절할 수 있다.   

Posted by 마블(이환문)
프로그래밍/MFC2011. 4. 7. 14:29

▷ CComboBox::AddString - 스트링을 더함.
▷ CComboBox::CComboBox - ComboBox 오브젝트를 생성(구성).
▷ CComboBox::Clear -현재 선택을 지움.
▷ CComboBox::CompareItem - 새로운 리스트 항목의 상태적 위치를 결정.
▷ CComboBox::Copy - 현재 선택을 Copy.
▷ CComboBox::Create - CComboBox를 생성.
▷ CComboBox::Cut - 제거된 텍스트를 복사.
▷ CComboBox::DeleteItem - 항목이 Combo 박스에서 제거.
▷ CComboBox::DeleteString - 스트링을 제거.
▷ CComboBox::Dir - 리스트를 더함.
▷ CComboBox::DrawItem - 양상이 변할 때 불려짐.
▷ CComboBox::FindString - 첫 번째 스트링을 찾음.
▷ CComboBox::FindStringExact - 첫 번째 리스트 박스 스트링을 찾음.
▷ CComboBox::GetCount - 항목의 수를 회복.
▷ CComboBox::GetCurSel - 현재 선택된 항목의 색인을 찾음
▷ CComboBox::GetDroppedControlRect - 스크린 좌표를 되찾음.
▷ CComboBox::GetDroppedState - 리스트 박스가 보일지를 결정.
▷ CComboBox::GetEditSel - 시작과 끝나는 문자의 위치를 얻음.
▷ CComboBox::GetExtendedUI - 디폴트, 확장 사용자 인터페이스의 결정.
▷ CComboBox::GetItemData - 항목과 관련된 비트값을 회복.
▷ CComboBox::GetItemDataPtr - 포인터로서 관련된 비트 값을 회복.
▷ CComboBox::GetItemHeight - 리스트 항목의 높이를 회복.
▷ CComboBox::GetLBText - 리스트 박스로 부터 스트링을 얻음.
▷ CComboBox::GetLBTextLen - 스트링의 길이를 지정.
▷ CComboBox::InsertString - 스트링의 삽입.
▷ CComboBox::LimitText - 텍스트의 길이를 제한.
▷ CComboBox::MeasureItem - Combo 박스 치수를 결정하기 위해 불려짐.
▷ CComboBox::Paste - 현재 커서 위치에서 편집 제어로 삽입.
▷ CComboBox::ResetContent - 모든 항목의 제거.
▷ CComboBox::SelectString - 스트링을 선택, 복사.
▷ CComboBox::SetCurSel - 스트링을 선택.
▷ CComboBox::SetEditSel - 편집 제어에서 문자들을 선택.
▷ CComboBox::SetExtendedUI - 디폴트, 확장 사용자 인터페이스의 선택.
▷ CComboBox::SetItemData - 항목과 관련된 값을 정함.
▷ CComboBox::SetItemDataPtr - 포인터에 대한 관련된 값을 정함.
▷ CComboBox::SetItemHeight - 높이를 지정.
▷ CComboBox::ShowDropDown - 리스트 박스를 보여주거나 숨김.
Posted by 마블(이환문)
프로그래밍/MFC2011. 3. 25. 08:41

 TCHAR szTemp[256];
 
 _stprintf(szTemp, _T("%d\n"), LOBYTE(LOWORD(wParam)));
 OutputDebugString(szTemp);

이와 같이 사용하면 사용자가 원하는값을 디버그 창에 출력할 수 있다.

Posted by 마블(이환문)