BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    cs.x = 0;
    cs.y = 0; 
    cs.cx = GetSystemMetrics(SM_CXSCREEN); //스크린 넓이

    cs.cy = GetSystemMetrics(SM_CYSCREEN); //스크린 높이

    cs.style = WS_CAPTION | WS_SYSMENU;     //타이틀 바와 시스템 메뉴 박스를 갖는 윈도우

    //cs.style |= WS_MAXIMIZEBOX; //디폴트로 설정되어 있는 윈도우 속성을 유지하면서, 최대화 박스 추가.

    //cs.dwExStyle |= (WS_EX_TOOLWINDOW|WX_EX_TOPMOST);

    //짧은 타이틀바를 갖고 항상 다른 윈도우의 위에 올라가 있는 윈도우 확장 스타일

    return TRUE;
}

 

//////////////////////////////////////////////////////////////////////////////

//전체화면

//CWinApp파생 클래스의 InitInstance함수에서

pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);

 

//////////////////////////////////////////////////////////////////////////////

//뷰의 배경색 바꾸기

//변경하고 싶은 뷰의 PreCreateWindow에서

cs.lpszClass = AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,
                   LoadCursor(NULL, IDC_ARROW),
                   (HBRUSH)GetStockObject(BLACK_BRUSH),
                   LoadIcon(NULL, IDI_APPLICATION)); 


//스크롤바는 컨트롤 변수를 사용하지 않고, 슬라이더바는 컨트를 변수를 사용해봤음

 

//포인터 객체 선언(스크롤바)

CScrollBar *m_pScrollRed;
CScrollBar *m_pScrollGreen;
CScrollBar *m_pScrollBlue;

 

//컨트롤 변수(슬라이더바)

CSliderCtrl m_ctrSliderRed;
CSliderCtrl m_ctrSliderGreen;
CSliderCtrl m_ctrSliderBlue;

 

///////////////////////////////////////////////////////////////////////////////

//OnInitDialog에서

 CString str;

 

 //스크롤바

 m_pScrollRed = (CScrollBar *)GetDlgItem(IDC_SCROLLBAR_RED);
 m_pScrollGreen = (CScrollBar *)GetDlgItem(IDC_SCROLLBAR_GREEN);
 m_pScrollBlue = (CScrollBar *)GetDlgItem(IDC_SCROLLBAR_BLUE);

 

 m_pScrollRed->SetScrollRange( 0, 255 );
 m_pScrollGreen->SetScrollRange( 0, 255 );
 m_pScrollBlue->SetScrollRange( 0, 255 );

 

 SetDlgItemInt( IDC_EDIT_SCROLL_RED, m_pScrollRed->SetScrollPos( 0 ) );
 SetDlgItemInt( IDC_EDIT_SCROLL_GREEN, m_pScrollGreen->SetScrollPos( 0 ) );
 SetDlgItemInt( IDC_EDIT_SCROLL_BLUE, m_pScrollBlue->SetScrollPos( 0 ) );

 

 //슬라이더바

 m_ctrSliderRed.SetRange( 0, 255 );
 m_ctrSliderGreen.SetRange( 0, 255 );
 m_ctrSliderBlue.SetRange( 0, 255 );

 

 m_ctrSliderRed.SetPos(0);
 m_ctrSliderGreen.SetPos(0);
 m_ctrSliderBlue.SetPos(0);

 

 str.Format( "%d", m_ctrSliderRed.GetPos() );
 m_ctrSliderEditRed.SetWindowText( str );

 

 str.Format( "%d", m_ctrSliderGreen.GetPos() );
 m_ctrSliderEditGreen.SetWindowText( str );

 

 str.Format( "%d", m_ctrSliderBlue.GetPos() );
 m_ctrSliderEditBlue.SetWindowText( str );

///////////////////////////////////////////////////////////////////////////////

 

///////////////////////////////////////////////////////////////////////////////

//OnHScroll에서

switch( nSBCode )
{
case SB_LINELEFT:
    pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() - 1);

    break;

 

case SB_LINERIGHT:
    pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() + 1);

    break;
  
case SB_PAGELEFT:
    pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() - 10);

    break;
  
case SB_PAGERIGHT:
    pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() + 10);

    break; 

 

case SB_THUMBTRACK:
    pScrollBar->SetScrollPos( nPos );
    break;

 

//슬라이더바는 스위치문 필요없음

}


m_ctrProgress.SetRange(0, 100);
m_ctrProgress.SetPos(0);
m_ctrProgress.SetStep(1);

for( int count = 0; count < 100; count++ )
{
    m_ctrProgress.StepIt();
  
    Sleep(10);
}



////////////////////////////////////////////////////////////////////

//OnInitDialog에서

 CRect rt;

 m_BigImage.Create( IDB_SMALL, 32, 1, RGB(255,255,255) );


 m_ctrList.SetImageList( &m_BigImage, LVSIL_NORMAL );
 m_ctrList.SetImageList( &m_imageTree, LVSIL_SMALL );

 

 m_ctrList.GetClientRect( &rt );


 m_ctrList.InsertColumn(0, "캐릭터 이름", LVCFMT_CENTER, 100 );
 m_ctrList.InsertColumn(1, "타입", LVCFMT_CENTER, 50 );
 m_ctrList.InsertColumn(2, "HP", LVCFMT_CENTER, 50 );
 m_ctrList.InsertColumn(3, "MP", LVCFMT_CENTER, rt.Width() - 120 );
 
 //아이템 초기화
 CString str;
 
 m_ctrList.InsertItem( 0, "루시안칼츠", 0 );
 m_ctrList.SetItemText( 0, 1, "전사" );
 m_ctrList.SetItemText( 0, 2, "1000" );
 m_ctrList.SetItemText( 0, 3, "200" );

 

 m_ctrList.InsertItem( 1, "이스핀샤를", 1 );
 m_ctrList.SetItemText( 1, 1, "마법사" );
 m_ctrList.SetItemText( 1, 2, "500" );
 m_ctrList.SetItemText( 1, 3, "1000" );

 

 m_ctrList.InsertItem( 2, "나야트레이", 2 );
 m_ctrList.SetItemText( 2, 1, "엘프" );
 m_ctrList.SetItemText( 2, 2, "600" );
 m_ctrList.SetItemText( 2, 3, "500" );

 

 m_ctrList.InsertItem( 3, "보리스진네만", 3 );
 m_ctrList.SetItemText( 3, 1, "다크엘크" );
 m_ctrList.SetItemText( 3, 2, "700" );
 m_ctrList.SetItemText( 3, 3, "300" );
 
 //리스트 컨트롤의 다양한 스타일 지원
 m_ctrList.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES );
 m_ctrList.ModifyStyle( LVS_TYPEMASK, LVS_REPORT );

/////////////////////////////////////////////////////////////////////////////////////////

 

/////////////////////////////////////////////////////////////////////////////////////////

//OnClickList에서

POSITION pos;
CString str;

 

pos = m_ctrList.GetFirstSelectedItemPosition();

str = m_ctrList.GetItemText( m_ctrList.GetNextSelectedItem(pos), 0 );

 

SetDlgItemText( IDC_EDIT_LIST, str );

////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////

//OnInitDialog에서

//인자 설명 : InsertItem( 노드이름, 선택되지 않은 경우 노드 이미지, 선택된 경우 노드이미지, 부모윈도의 노드 );

 

 CImageList m_imageTree.Create( IDB_SMALL, 16, 1, RGB(255,255,255) );
 

 m_ctrTree.SetImageList( &m_imageTree, TVSIL_NORMAL );

 HTREEITEM hSub = m_ctrTree.InsertItem( "검", 0, 1 );
 m_ctrTree.InsertItem( "단검", 2, 1, hSub );
 m_ctrTree.InsertItem( "장검", 2, 1, hSub );

 hSub = m_ctrTree.InsertItem( "신발", 0, 1 );
 hSub = m_ctrTree.InsertItem( "장화", 2, 1, hSub );

 m_ctrTree.InsertItem( "가죽신", 3, 1, hSub );

/////////////////////////////////////////////////////////////////////////// 

 

/////////////////////////////////////////////////////////////////////////// 

//OnSelchangedTree에서 현재 선택된 노드의 값을 에디트박스에 집어넣기

HTREEITEM hSel = pNMTreeView->itemNew.hItem;
 
if( hSel != NULL )
{
    CString str = m_ctrTree.GetItemText( hSel );

    SetDlgItemText( IDC_EDIT_TREE, str );
}



/////////////////////////////////////////////////

//에디트 박스에서 값을 가져와 리스트박스에 추가하기

 CString str;
 GetDlgItemText( IDC_EDIT2, str );
 
 m_ctrList.AddString( str );

/////////////////////////////////////////////////

 

/////////////////////////////////////////////////

//OnSelchangeList에서 리스트의 컬럼을 얻어서 에디트박스에 값 넣기

 CString str;

 m_ctrList.GetText( m_ctrList.GetCurSel(), str );

 SetDlgItemText( IDC_EDIT4, str ); 

/////////////////////////////////////////////////

 

/////////////////////////////////////////////////

//삭제

 m_ctrList.DeleteString( m_ctrList.GetCurSel() );

/////////////////////////////////////////////////

'Programming > MFC' 카테고리의 다른 글

리스트컨트롤 사용방법  (0) 2010.11.16
Tree 컨트롤 사용방법  (0) 2010.11.16
콤보박스 컨트롤 사용방법  (0) 2010.11.16
OnLButtonDown 메시지에서 nFlags값 사용  (1) 2010.11.16
윈도우 창 타이틀 텍스트 변경  (0) 2010.11.16

/////////////////////////////////////////////

//에디트 박스에서 값을 가져와 콤보박스에 스트링 추가하기

CString str;
GetDlgItemText( IDC_EDIT1, str );
 
m_ctrCombo.AddString( str );

/////////////////////////////////////////////

 

/////////////////////////////////////////////

//OnSelchangeCombo에서 각 셀의 값을 가져와 텍스트 박스에 넣기

CString str;

m_ctrCombo.GetLBText( m_ctrCombo.GetCurSel(), str );

SetDlgItemText( IDC_EDIT3, str ); 

/////////////////////////////////////////////

 

/////////////////////////////////////////////

//콤보박스 리셋

m_ctrCombo.ResetContent();

/////////////////////////////////////////////


void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
    if( nFlags == MK_CONTROL + MK_LBUTTON )
        MessageBox( "컨트롤 키 누름" );

    else if( nFlags == MK_SHIFT + MK_LBUTTON )
        MessageBox( "쉬프트 키 누름" );

    else
       AfxMessageBox( "마우스 왼쪽 버튼 누름" );
}


AfxGetMainWnd()->SetWindowText( "HELLO" );

//원래 등록되어 있던 뷰에서 복사해서 붙여넣기 하면 되고, 위치를 꼭 같은 위치에 붙여넣도록 주의.

 

/******************************************************************************************/

//1. 해더파일에서

///////////////////////////////

//추가

#include "TestDoc.h"

///////////////////////////////

 

class CNewView : public CView
{
 // Attributes
 public:

//////////////////////////////////

//추가
  CTestDoc* GetDocument();

/////////////////////////////////

 

.....

 

protected:
 //{{AFX_MSG(CNewView)
 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
 //}}AFX_MSG
 DECLARE_MESSAGE_MAP()
};

 

/////////////////////////////////////

//추가

#ifndef _DEBUG 

inline CTestDoc* CNewView::GetDocument()  //클래스명 주의
   { return (CTestDoc*)m_pDocument; }
#endif

/////////////////////////////////////

/******************************************************************************************/

 

 

/******************************************************************************************/

//2. 소스파일에서

void CNewView::Dump(CDumpContext& dc) const
{
 CView::Dump(dc);
}

 

//////////////////////////////////////////

//추가

CTestDoc* CNewView::GetDocument() //클래스명 주의
{
 ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestDoc)));
 return (CTestDoc*)m_pDocument;
}

//////////////////////////////////////////


#endif //_DEBUG

/******************************************************************************************/

 

 

/******************************************************************************************/

//3. OnDraw에서

void CNewView::OnDraw(CDC* pDC)
{

////////////////////////////////////////

//수정
 CTestDoc* pDoc = GetDocument();

////////////////////////////////////////


 // TODO: add draw code here

}

/******************************************************************************************/

+ Recent posts