WinMainCRTStartup -> CWinApp::CWinApp -> CMyApp::CMyApp @
-> WinMain -> ::AfxWinMain -> ::AfxGetApp @
-> ::AfxWinInit -> ::AfxInitThread @
-> CWinApp::InitApplication @
-> CWinApp::InitInstance -> CSingleDocTemplate::CSingleDocTemplate @
-> CWinApp::AddDocTemplate @
-> CWinApp::ParseCommandLine @
-> CWinApp::ProcessShellCommand -> CWinApp::OnFileNew -> CDocTemplate::OpenDocumentFile ①
-> CWinApp::Run ⑦
-> CWinApp::ExitInstance @
-> ::AfxWinTerm @
-> CWinApp::~CWinApp -> CMyApp::~CMyApp @
① CSingleDocTemplate::OpenDocumentFile -> CDocTemplate::CreateNewDocument -> CDocument::CDocument @
-> CDocTemplate::CreateNewFrame -> CFrameWnd::CFrameWnd -> CMainFrame::CMainFrame @
-> CWnd::Create ②
-> CDocument::OnNewDocument ⑥
-> CFrameWnd::InitialUpdateFrame @
② CFrameWnd::Create -> CFrameWnd::PreCreateWindow -> CMainFrame::PreCreateWindow @

③ : WM_CREATE
③ CMainFrame::OnCreate -> CFrameWnd::OnCreateClient -> CFrameWnd::CreateView -> CView::CView -> CMyView::CMyView @
-> CWnd::Create ④
④ CView::Create -> CView::PreCreateWindow -> CMyView::PreCreateWindow @

⑤ : WM_CREATE
⑤ CMyView::OnCreate @
⑥ CMyDoc::OnNewDocument @
⑦ CWinApp::Run -> CWinThread::Run -> CWinThread::PumpMessage ↘
⑧ : 루프
-> CWinThread::OnIdle ↗
⑧ CWnd::WindowProc -> CCmdTarget::OnCmdMsg @

WM_SYSCOMMAND => CWnd::OnSysCommand -> ⑨ : WM_CLOSE
⑨ CFrameWnd::OnClose -> CWndDestroyWindow -> ⑩ : WM_DESTROY -> ⑫ : 객체 소멸
↘ ⑪ : WM_NCDESTROY ↗
⑩ CWnd::OnDestroy @
⑪ CWnd::OnNcDestroy @
⑫ CView::~CView -> CFrameWnd::~CFrameWnd -> CDocument::~CDocument -> CSingleDocTemplate::~CSingleDocTemplate @


::AfxWinMain -> ::AfxGetApp @
-> ::AfxWinInit -> ::AfxInitThread @
-> CWinApp::InitApplication @
-> CWinApp::InitInstance -> CSingleDocTemplate::CSingleDocTemplate @
-> CWinApp::AddDocTemplate @
-> CWinApp::ParseCommandLine @
-> CWinApp::ProcessShellCommand -> CWinApp::OnFileNew -> CDocTemplate::OpenDocumentFile ①을 수행
-> CWinApp::Run 을 수행
-> CWinApp::ExitInstance @
-> ::AfxWinTerm @
-> CWinApp::~CWinApp -> CMFCAppApp::~CmfcAppApp @


출처: http://microdev.pe.kr/22

Posted by 모과이IT
,

1. class CArchive


▷ CArchive::CArchive - CArchive 오브젝트를 생성(구성).
▷ CArchive::~CArchive - CArchive 오브젝트의 파괴(소멸).
▷ CArchive::Close - CFile로부터의 접속을 끊음.
▷ CArchive::Fiush - archive 버퍼로부터 쓰지 않은 데이터의 fiush.
▷ CArchive::GetFile - archive를 위해 CFile 오브젝트 포인터를 갖음.
▷ CArchive::IsLoading - archive가 로드되고 있는지를 결정.
▷ CArchive::IsStoring - archive가 저장되고 있는지를 결정.
▷ CArchive::Read - 원래 바이트를 읽음.
▷ CArchive::ReadObject - 로드하기 위해 오브젝트의 Serialize 기능을 부름.
▷ CArchive::Write - 원래 바이트를 씀.
▷ CArchive::WriteObject - 기억하기 위해 오브젝트의 Serialize 기능을 부름.


▷ CArchive::operator<< - 오브젝트들과 유형들을 archive로 기억.
▷ CArchive::operator>> - archive로부터 오브젝트들과 유형들을 로드.


2. class CArchiveException : public CException


▷ CArchiveException::CArchiveException - cause의 값을 오브젝트에 기억하면서 오브젝트를 구성.


▷ CArchiveException::m_cause - 예외 원인을 지정.


3. class CBEdit : public CHEdit


▷ CBEdit::CBEdit -CBEdit 오브젝트를 생성(구성).
▷ CBEdit::CharOffset - bedit 제어 안의 문자 포인터를 그 문자로 치환.
▷ CBEdit::CharPosition - bedit 제어안의 문자 위치로 전환.
▷ CBEdit::Cerat - CBEdit 제어를 생성(구성)하고 보여줌.
▷ CBEdit::DefaultFont - bedit 제어의 폰트를 디폴트 폰트로 바꿈.
▷ CBEdit::GetBoxLayout - 박스 배치를 얻음.
▷ CBEdit::SetBoxLayut - 박스 배치를 지정.

4. class CBitmap : public CGdiObject


▷ CBitmap::CBitmap - CBitmap 오브젝트를 생성(구성).
▷ CBitmap::CreatBitmap - 메모리 비트맵으로 오브젝트를 초기화.
▷ CBitmap::CreatBitmapIndirect - 비트맵 패턴으로 오브젝트를 초기화함.
▷ CBitmap::CreatCompatibleBitmap - 지정된 장치와 호환성 있게 초기화함.
▷ CBitmap::CreatDiscardableBitmap - 처분할 수 있는 비트맴으로 초기화함.
▷ CBitmap::FontHandle - CBitmap 오브젝트로 포인터를 반환.
▷ CBitmap::GetBitmapBits - 비트를 버퍼로 복사.
▷ CBitmap::GetBitmapDimension - 비트맵의 폭과 높이를 반환.
▷ CBitmap::LoadBitmap - 비트맵 자원을 로드.
▷ CBitmap::LoadOEMBitmap - 윈도우 비트맵을 로드.
▷ CBitmap::SetBitmapBits - 비트를 지정된 비트값으로 지정.
▷ CBitmap::SetBitmapDimension - 비트맵의 폭과 높이를 0.1mm 단위로 할당.


5. class CBitmapButton : public CButton


▷ CBitmapButton::AutoLoad - 다이얼로그에 버튼을 연관, 로드.
▷ CBitmapButton::CBitmapButton - CBitmapButton 오브젝트를 생성(구성).
▷ CBitmapButton::LoadBitmaps - 하나나 그 이상의 비트맵 자원을 로드.
▷ CBitmapButton::SizeToContent - 버튼의 크기를 잼.


6. class CBrush : public CGdiObject


▷ CBrush::CBrush - CBrush 오브젝트를 생성(구성).
▷ CBrush::CreatBrushIndirect - 브러쉬를 초기화함.
▷ CBrush::CreateDIBPatternBrush - DIB에 의해 지정된 패턴으로 초기화함.
▷ CBrush::CreateHatchBrush - hatched 패턴과 색을 갖고 초기화함.
▷ CBrush::CreatePatternBeush - 지정된 패턴을 갖는 브러쉬를 초기화함.
▷ CBrush::CreateSolidBrush - solid 색을 갖고 초기화함.
▷ CBrush::FromHandle - 포인터를 반환.


7. class CButton : public CWnd


▷ CButton::CButton - CButton 오브젝트를 생성(구성).
▷ CButton::Create - Windows button 제어를 생성(구성).
▷ CButton::DrawItem - CButton 오브젝트를 그리기 위해 override함.
▷ CButton::GetButtonStyle - 버튼 제어 스타일에 대한 정보를 획득.
▷ CButton::GetCheck - 버튼 제어의 체크 상태를 회복.
▷ CButton::GetState - 체크, 하이라이트, 초점 상태를 회복.
▷ CButton::SetButtonStyle - 버튼 스타일을 바꿈.
▷ CButton::SetCheck - 버튼 제어의 체크 상태를 지정.
▷ CButton::SetState - 하이라이트된 상태를 지정.


8. class CbyteArray : public CObject


9. class CClientDC : public CDC


▷ CClientDC::CClientDC - CClientDC 오브젝트를 생성(구성).


▷ CClientDC::m_hWnd - CClientDC의 타당한 것을 위한 윈도우 HWND.


10. class CCmdTargt : public CObject


▷ CCmdTargt::BeginWaitCursor - 커서를 보여줌.
▷ CCmdTargt::EndWaitCursor - 이전의 커서로 반환.
▷ CCmdTargt::OnCmdMsg - 명령 메시지를 Route.
▷ CCmdTargt::RestoreWaitCursor - 커서를 회복.


11. class CCmdUI


▷ CCmdUI::ContinueRouting - 현재 메시지를 Route 하는 것을 계속함.
▷ CCmdUI::Enable - 사용자 인터페이스 항목을 가능/ 불가능.
▷ CCmdUI::Setcheck - 사용자 인터페이스 항목의 체크 상태를 지정.
▷ CCmdUI::SetRadio - Setcheck와 같으나 라디오 그룹에서 조작.
▷ CCmdUI::SetText - 사용자 인터페이스 항목을 위한 텍스트를 지정.


12. class CColorDialog : public CDialog


▷ CColorDialog::CColorDialog - CColorDialog 오브젝트 생성(구성).
▷ CColorDialog::DoModal - 사용자가 선택.
▷ CColorDialog::GetColor - COLORREF 구조를 반환.
▷ CColorDialog::OnColorOK - 입력된 색의 타당을 위해 overrid.
▷ CColorDialog::SetCurrentColor - 현재 색 선택을 맞춤.


▷ CColorDialog::clrSavedCustom - RGB 값의 배열.
▷ CColorDialog::m_cc - 커스터마이즈하기 위해 사용된 구조.


13. class CComboBox : public CWnd


▷ 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 - 리스트 박스를 보여주거나 숨김.


14. class CControlBar : public CWnd


▷ CControlBar::GetCount - 제어 바의 HWND가 아닌 숫자를 복귀.


▷ CControlBar::m_bAutoDelete - 제어바가 파괴될 때 지워짐.



15. class CDataExchange


16. class CDC : public Cobject


▷ CDC::AbortDoc - 모든 것을 지우면서 현재 인쇄 작업을 종결.
▷ CDC::Arc - 생략의 arc를 그림.
▷ CDC::Attatch - 윈도우 장치 문맥을 CDC 오브젝트에 붙임.
▷ CDC::BitBit - 비트맵을 복사.
▷ CDC::CDC - CDC 오브젝트를 건설.
▷ CDC::Chord - chord를 그림.
▷ CDC::CreateCompatibleDC - 호환 가능한 기억 장치 문맥을 생성.
▷ CDC::CreateDC - 특정 장치를 위한 장치 문맥을 생성.
▷ CDC::CreateIC - 특정 장치를 위한 정보 문맥을 생성.
▷ CDC::DeleteDC - 윈도우 장치 문맥을 삭제.
▷ CDC::DeleteTempMap - 일시적 CDC 오브젝트를 지움.
▷ CDC::Detach - 윈도우 장치 문맥을 detach함.
▷ CDC::DPtoLP - 논리적 포인터나 네모로 변환.
▷ CDC::DrawFocusRect - 초점을 가리키기 위해 사용된 유형에 네모를 그림.
▷ CDC::DrawIcon - 아이콘을 그림.
▷ CDC::DrawText - 특정한 네모의 형식화된 텍스트를 그림.
▷ CDC::Ellipse - ellipse를 그림.
▷ CDC::EndDoc - 인쇄 작업을 끝냄.
▷ CDC::EndPage - 페이지가 끝남을 알림.
▷ CDC::Escape - 직접 사용 불가능한 기능에 접근하도록 허락.
▷ CDC::ExcludeClipRect - 새로운 clipping 영역을 생성.
▷ CDC::ExcludeUpdateRgn - 타당치 않은 영역에의 드로잉을 막음.
▷ CDC::ExtFloodFill - 기능보다 더 많은 융통성을 제공.
▷ CDC::ExtTextOut - 문자 스트링을 씀.
▷ CDC::FillRect - 특정 브러쉬를 사용함으로 주어진 네모를 채움.
▷ CDC::FillRgn - 특정 브러쉬로 특정 영역을 채움.
▷ CDC::FloodFill - 현재 브러쉬로 영역을 채움.
▷ CDC::FrameRect - 네모 주위의 경계를 그림.
▷ CDC::FrameRgn - 특정 영역을 따르는 경계를 그림.
▷ CDC::FromHandle - Handle이 주어질 때 CDC 오브젝트에 대한 포인터를 복귀.
▷ CDC::GetAspectRatioFilter - 현재 aspect-ratio filter의 세팅을 검색.
▷ CDC::GetBkColor - 현재 배경색을 검색.
▷ CDC::GetBkMode - 배경 모드를 검색.
▷ CDC::GetBoundsRect - 현재 축적된 bounding 네모를 복귀.
▷ CDC::GetBrushOrg - 현재 브러쉬의 근원을 검색.
▷ CDC::GetCharABCWidths - 현재 실행의 문자 넓이를 검색.
▷ CDC::GetCharWidth - 현재 실행 문자 중 개별의 문자 넓이를 검색.
▷ CDC::GetClipBox - bounding 네모의 규모를 검색.
▷ CDC::GetCurrentPosition - Pen의 현재 위치를 검색.
▷ CDC::GetDeviceCaps - 특정 장치 정보의 검색.
▷ CDC::GetFontData - font-metric 정보를 검색.
▷ CDC::GetGlyphOutline - outline 비트맵을 검색.
▷ CDC::GetKerningPairs - 문자 kerning짝을 검색.
▷ CDC::GetMapMode - 현재의 mappimg 모드를 검색.
▷ CDC::GetNearestColor - 지정된 색에 가장 가까운 색을 검색.
▷ CDC::GetOutlineTextMetrics - font Metric 정보를 검색.
▷ CDC::GetOutputCharWidth - 출력 장치 문맥에서 개별 문자의 넓이를 검색.
▷ CDC::GetOutputTabbedTextExtent - 출력 장치 문맥의 스트링의 넓이와 높이를 계산.
▷ CDC::GetOutputTextExtent - 출력 장치로부터 현재 폰트를 사용하는 텍스트의 넓이와 높이를 검색.
▷ CDC::GetOutputTextMetrics - 출력 장치로부터 현재 폰트를 위한 metric을 검색.
▷ CDC::GetPixel - 특정한 점의 pixel의 RGB색 가치를 검색.
▷ CDC::GetPolyFillMode - 현재 polygon 모드를 검색.
▷ CDC::GetROP2 - 현재 그리기 모드를 검색.
▷ CDC::GetStretchBltMode - 현재 비트맵 스트레칭 모드를 검색.
▷ CDC::GetTabbedTextExtent - 속성 장치 문맥의 스트링의 넓이와 높이를 지정.
▷ CDC::GetTextAlign - 텍스트 배열 표시를 검색.
▷ CDC::GetTextCharacterExtra - 문자의 공간을 위한 현재 세팅을 검색.
▷ CDC::GetTextColor - 현재 텍스트 색을 검색.
▷ CDC::GetTextExtent - 출력 장치 문맥에 텍스트의 넓이와 높이를 계산.
▷ CDC::GetTextFace - 현재 폰트의 typeface명을 버퍼로 복사.
▷ CDC::GetTextMetrics - 속성 장치 문맥으로부터 현재 폰트를 위한 metric을 검색.
▷ CDC::GetViewportExt - x와 y 좌표를 검색.
▷ CDC::GetViewportOrg - 원점을 수정.
▷ CDC::GetWindowExt - x,y 확장을 검색.
▷ CDC::GetWindowOrg - 윈도우 원점의 x, y 좌표를 검색.
▷ CDC::GrayString - 비트멥을 회색(흐림)으로 함.
▷ CDC::IntersectClipRect - 새로운 clipping 영역을 생성.
▷ CDC::InvertRect - 네모의 내용을 변환.
▷ CDC::InvertRgn - 색을 영역으로 변환.
▷ CDC::LineTo - 라인을 그리지만 점을 포함하지 않음.
▷ CDC::LPtoDP - 논리적 포인터나 네모를 장치 포인터나 네모로 변환.
▷ CDC::MoveTo - 현재 위치를 이동.
▷ CDC::OffsetClipRgn - clipping 영역을 이동.
▷ CDC::OffsetViewportOrg - viewport 원점을 수정.
▷ CDC::OffsetWindowOrg - 윈도우 원점을 수정.
▷ CDC::PaintRgn - 선택된 브러쉬로 영역을 채움.
▷ CDC::PatBlt - 비트 패턴을 생성.
▷ CDC::Pie - pie 모양을 그림.
▷ CDC::PlayMetaFile - 특정한 metafile의 내용을 작동.
▷ CDC::Polygon - polygon을 그림.
▷ CDC::Polyline - 라인 세그먼트의 세트를 그림.
▷ CDC::PtVisible - 주어진 점이 clipping 영역 내에 있는지를 지정.
▷ CDC::QueryAbort - abort 기능을 부르고 인쇄가 종결될지를 조사.
▷ CDC::RealizePalette - 시스템 팔레트에 요소를 맵함.
▷ CDC::Rectangle - 현재 펜을 사용해 네모를 그림.
▷ CDC::RectVisible - 주어진 네모의 어떤 부분이 clipping 영역 내에 있는지를 결정.
▷ CDC::ReleaseAttribDC - m_hAttribDC를 해제.
▷ CDC::ResetDC - m_hAttribDC 장치 문맥을 갱신.
▷ CDC::RestoreDC - 장치 문맥을 재저장.
▷ CDC::RoundRect - 현재 둥근 코너의 네모를 그림.
▷ CDC::SaveDC - 현재 상태를 저장.
▷ CDC::ScaleViewportExt - viewport 확장을 수정.
▷ CDC::ScaleWindowExt - 현재 가치에 관련된 윈도우 확장을 수정.
▷ CDC::ScrollDC - 수직, 수평으로 비트맵의 네모를 스크롤.
▷ CDC::SelectClipRgn - 현재 clipping 영역과 같은 영역을 선택.
▷ CDC::SelectObject - 펜과 같은 GDI 드로잉 오브젝트를 선택.
▷ CDC::SelectPalette - 논리적 팔레트를 선택.
▷ CDC::SelectStockObject - 미리 정의된 펜, 브러쉬, 폰트의 하나를 선택.
▷ CDC::SetAbortProc - 프로그래머 제공의 callback 기능을 정함.
▷ CDC::SetAttribDC - m_hAttribDC를 지정.
▷ CDC::SetBkColor - 현재 배경색을 지정.
▷ CDC::SetBkMode - 배경 모드를 지정.
▷ CDC::SetBoundRect - bounding 네모의 정보의 축적을 제어.
▷ CDC::SetBrushOrg - 브러쉬를 위한 근원을 지정.
▷ CDC::SetMapMode - 현재의 mapping 모드를 지정.
▷ CDC::SetMapperFlags - 물리적 폰트에 논리적 폰트를 맵할 때 알고리즘을 바꿈.
▷ CDC::SetOutputDC - 출력 장치 문맥 m_hDC를 지정.
▷ CDC::SetPixel - 특정 점의 pixel을 특정한 색의 가장 근접한 것으로 지정.
▷ CDC::SetPolyFillMode - 현재 polygon 모드를 지정.
▷ CDC::SetROP2 - 현재 그리기 모드를 지정.
▷ CDC::SetStrectchBltMode - 현재 비트맵 스트레칭 모드를 지정.
▷ CDC::SetTextAlign - 텍스 배열 표시를 지정.
▷ CDC::SetTextColor - 현재 배경색을 지정.
▷ CDC::SetTextJustification - 스트링의 잘린 문자에 공간을 첨가.
▷ CDC::SetViewportExt - viewport의 x, y 확장을 지정.
▷ CDC::SetViewportOrg - 원점을 지정.
▷ CDC::SetWindowExt - 관련된 윈도우의 x, y 확장을 지정.
▷ CDC::SetWindowOrg - 장치 문맥의 윈도우의 원점을 지정.
▷ CDC::StartDoc - 새로운 인쇄 작업시 시작.
▷ CDC::StartPage - 시작 페이지.
▷ CDC::StretchBlt - 비트맵을 늘이거나 줄이는 이동.
▷ CDC::TabbedTextOut - tab을 확장하는 특정한 위치에 문자 스트링을 씀.
▷ CDC::TextOut - 특정 위치에 문자 스트링을 씀.
▷ CDC::UpdateColors - 현재 색을 시스템 팔레트에 매치시켜 갱신.


▷ CDC::m_hAttribDC - CDC 오브젝트에 의해 사용된 특정 장치 문맥.
▷ CDC::m_hDC - CDC 오브젝트에 의해 사용된 출력 장치 문맥


17. class CDialog : public CWnd


▷ CDialog::CDialog - CDialog 오브젝트를 건설.
▷ CDialog::Create - CDialog 오브젝트를 초기화.
▷ CDialog::CreateIndirect - 모드 없는 다이얼로그 박스를 생성.
▷ CDialog::DoModal - modal dialog box를 부름.
▷ CDialog::EndDialog - modal dialog box를 닫음.
▷ CDialog::InitModalIndirect - 다이얼로그 박스 템플릿으로부터 modal dialog box를 생성.
▷ CDialog::IsDialogMessage - 주어진 메시지의 모드 유무 결정.
▷ CDialog::MapDialogRect - 스크린 단위로 바꿈.
▷ CDialog::OnCancel - Cancel 버튼이나 ESC키 행위를 수행함.
▷ CDialog::OnInitDialog - 다이얼로그 박스 초기화를 증가시키기 위한 오버라이드.
▷ CDialog::OnOk - OK 버튼을 수행하기 위한 오버라이드.
▷ CDialog::OnSetFont - 사용할 폰트를 지정하기 위한 오버라이드.
▷ CDialog::SetDefID - 디폴트 푸시버튼 제어의 ID


18. class CDialogBar : public CControlBar


▷ CDialogBar::CDialogBar - CDialogBar 오브젝트를 생성.
▷ CDialogBar::Create - CDialogBar 오브젝트에 붙일 윈도우 다이얼로그 바를 생성.


19. class CDocItem : public CObject


▷ CDocItem::GetDocument - 항목을 포함하는 문서를 복귀.


20. class CDocTemplate : public CCmdTarget


▷ CDocTemplate::GetDocString - 문서 유형을 설명하는 스트링을 철회.


21. class CDocument : public CCmdTarget


▷ CDocument::AddView - View를 문서에 붙임.
▷ CDocument::CanCloseFrame - 프레임 윈도우를 닫기 전에 불려짐.
▷ CDocument::CDocument - CDocument 오브젝트를 생성.
▷ CDocument::DeleteContents - 문서의 cleanup을 수행하기 위함.
▷ CDocument::GetDocTemplate - 문서 템플릿의 포인터를 복귀.
▷ CDocument::GetFirstViewPosition - View 목록의 첫 번째 위치를 복귀.
▷ CDocument::GetNextView - 문서와 관련된 View 목록을 통해 반복.
▷ CDocument::OnChangedViewList - View가 첨가되거나 문서로부터 제거된 후 불려짐.
▷ CDocument::OnCloseDocument - 문서의 닫음.
▷ CDocument::OnNewDocument - 새로운 문서의 생성.
▷ CDocument::OnOpenDocument - 기존 문서의 열음.
▷ CDocument::OnSaveDocument - 문서의 저장.
▷ CDocument::RemoveView - 문서로부터 View를 분리.
▷ CDocument::SetPathName - 문서의 데이터 파일의 경로를 정함.
▷ CDocument::UpdateAllViews - 문서가 수정된 모든 View를 공시함.


22. class CDumpContext


▷ CDumpContext::CDumpContext - CDumpContext 오브젝트를 생성.
▷ CDumpContext::Flush - Dump 문맥 버퍼에 데이터를 Flush.
▷ CDumpContext::HexDump - 16진법 형식에 바이트를 Dump함.
▷ CDumpContext::SetDepth - Dump의 깊이를 지정.


23. class CDWordArray : public CObject


24. class CEdit : public CWnd


▷ CEdit::CanUndo - 편집 제어 조작의 Undo 결정.
▷ CEdit::CEdit - CEdit 제어 오브젝트를 생성.
▷ CEdit::Clear - 현재 선택을 지움.
▷ CEdit::Copy - 현재 선택을 복사.
▷ CEdit::Create - 윈도우 편집 제어를 생성하고 CEdit 오브젝트에 붙임.
▷ CEdit::Cut - 현제 선택을 자름.
▷ CEdit::EmptyUndoBuffer - Undo 표시를 제거함.
▷ CEdit::FmtLines - Linebreat 문자의 on/off를 지정.
▷ CEdit::GetHandle - 현재 할당된 메모리의 핸들을 검색.
▷ CEdit::GetLine - 라인의 숫자를 검색.
▷ CEdit::GetModify - 편집 제어의 내용이 수정되었는지를 결정.
▷ CEdit::GetSel - 시작과 끝 문자의 위치를 얻음.
▷ CEdit::LineFromChar - 라인 넘버를 검색.
▷ CEdit::LineIndex - 문자 색인을 검색.
▷ CEdit::LineLength - 라인의 길이를 검색.
▷ CEdit::LineScroll - 텍스트를 스크롤.
▷ CEdit::SetHandle - 메모리의 핸들을 지정.
▷ CEdit::SetPasswordChar - 암호 문자를 지정.
▷ CEdit::SetRect - 포맷 사각형의 지정과 제어의 갱신.
▷ CEdit::SetSel - 문자 범위를 선택.
▷ CEdit::SetTabStops - Tab-stop을 지정.
▷ CEdit::Undo - 마지막 편집 제어 조작으로 돌아감.


25. class CEditView : public CView


▷ CEditView::CEditView - CEditView 오브젝트를 생성.
▷ CEditView::FindText - 스트링을 찾음.
▷ CEditView::GetPrinterFont - 현재 프린터 폰트를 검색.
▷ CEditView::OnFindNext - 스트링의 다음을 찾음.
▷ CEditView::OnReplaceAll - 스트링의 모든 출현을 대신함.
▷ CEditView::OnTextNotFound - 찾기 조작의 실패.
▷ CEditView::PrintInsideRect - 사각형 내부에 구문을 놓음.
▷ CEditView::SetPrinterFont - 새로운 프린터 폰트를 정함.
▷ CEditView::SetTabStops - 인쇄를 위한 Tab-stop를 지정.


26. class CException : public CObject


27. class CFile : public CObject


▷CFile::CFile - CFile 오브젝트를 생성.
▷CFile::Close -파일을 닫음.
▷CFile::Duplicate - 중복 오브젝트를 생성.
▷CFile::Flush - 이미 쓰여진 데이터를 Flush.
▷CFile::GetStatus - 지정된 파일의 상태를 얻음.
▷CFile::Open - 파일을 연다.
▷CFile::Read - 데이터를 읽음.
▷CFile::Remove - 지정된 파일을 지움.
▷CFile::Rename - 지정된 파일을 재명명.
▷CFile::Seek - 현재 파일 포인터를 위치시킴.
▷CFile::SetStatus - 파일의 처음에 포인터를 위치시킴.
▷CFile::Write - 데이터를 씀.


▷CFile::m_hFile - 작동 시스템 파일 핸들을 포함.


28. class CFileDialog : public CDialog


▷ CFileDialog::CFileDialog - CFileDialog 오브젝트를 만듬.
▷ CFileDialog::DoModal - 다이얼로그 박스를 보이고 선택.
▷ CFileDialog::GetFileExt - 파일 확장자를 복귀.
▷ CFileDialog::GetFileName - 파일명을 복귀.
▷ CFileDialog::GetPathName - 완전한 경로를 복귀.
▷ CFileDialog::OnFileNameOK - 파일명을 타당화하기 위함.
▷ CFileDialog::OnLBSelChangedNotify - 목록 박스 선택이 바뀜.
▷ CFileDialog::OnShareViolation - 공유 위반이 생김.


▷ CFileDialog::m_ofn - 윈도우 OPENFILENAME 구조


29. class CFileException : public CException


▷ CFileException::CFileException - CFileException 오브젝트를 생성.
▷ CFileException::ErrnoToException - 실행 시간 에러 수에 상응하는 원인 코드를 반환.
▷ CFileException::OsErrorToException - MS-DOS 에러 수에 상응하는 원인 코드를 반환.
▷ CFileException::ThrowOsError - 파일 예외.


▷ CFileException::m_cause - 예외 원인.
▷ CFileException::m_IOsError - 운영 시스템 에러 수의 포함.


30. class CFindReplaceDialog : public CDialog


▷ CFindReplaceDialog::CFindReplaceDialog - 오브젝트의 구성.
▷ CFindReplaceDialog::Create - 오브젝트의 생성.
▷ CFindReplaceDialog::FindNext - 다음 스트링의 찾기.
▷ CFindReplaceDialog::GetFindString - 찾기 스트링을 되찾기 위함.
▷ CFindReplaceDialog::IsTerminating - 다이얼로그 박스의 끝남을 확인.
▷ CFindReplaceDialog::ReplaceAll - 스트링의 모드 발생의 치환.
▷ CFindReplaceDialog::SearchDown - 찾기가 아래 방향으로 진행되기를 원하는지의 결정.


▷ CFindReplaceDialog::m_fr - 오브젝트를 커스터마이즈하기 위함.


31. class CFont : public CGdiObject


▷ CFont::CFont - CFont 오브젝트를 생성.
▷ CFont::CreateCFont - CFont를 초기화.
▷ CFont::CreateFontIndirect - LOGFONT에서 주어진 특성으로 초기화.
▷ CFont::FromHandle - 포인터를 반환.


32. class CFontDialog : public CDialog


▷ CFontDialog::CFontDialog -CFontDialog 오브젝트를 생성.
▷ CFontDialog::DoModal - 다이얼로그 박스를 보여줌.
▷ CFontDialog::GetFaceName - Face 이름을 반환.
▷ CFontDialog::InUnderline - 밑줄의 유무.


▷ CFontDialog::m_cf - 커스터마이즈하기 위함.


33. class CFormView : public CScrollView


▷ CFormView::CFormView - CFormView의 구성.


34. class CFrameWnd : public CWnd


▷ CFrameWnd::ActivateFrame - 프레임의 이용 가능.
▷ CFrameWnd::CFrameWnd - CFrameWnd 오브젝트의 생성.
▷ CFrameWnd::Create - CFrameWnd 오브젝트를 초기화.
▷ CFrameWnd::GetActiveDocument - CDocument 오브젝트를 반환.
▷ CFrameWnd::GetaActiveView - CView 오브젝트를 반환.
▷ CFrameWnd::LoadAccelTable - 가속기표를 로드.
▷ CFrameWnd::LoadFrame - 프레임 윈도우의 로드.
▷ CFrameWnd::SetActiveView - CView 오브젝트를 지정.


▷ CFrameWnd::m_bAutoMenuEnable - 항목을 위한 가능/불가능한 기능화를 제어.
▷ CFrameWnd::rectDefault - 윈도우의 이니셜 크기와 위치를 선택.


35. class CGdiObject : public CObject


▷ CGdiObject::Attach - 오브젝트의 부착.
▷ CGdiObject::CGdiObject - CGdiObject 오브젝트를 생성.
▷ CGdiObject::CreateStockObject - 미리 정의한 핸들을 회복.
▷ CGdiObject:DeleteObject - 오브젝트의 제거.
▷ CGdiObject::Detach - 오브젝트의 분리.
▷ CGdiObject::GetObject - 버퍼의 채움.


▷ CGdiObject::m_hObject - 오브젝트에 부착된 핸들.


36. class CHEdit : public CEdit


▷ CHEdit::CHEdit - CHEdit 오브젝트를 생성.
▷ CHEdit::Create - CHEdit 제어를 만듦.
▷ CHEdit::StopInkMode - 잉크의 모음을 멈춤.

37. class CListBox : public CWnd


▷ CListBox::AddString -스트링을 리스트 박스에 더함.
▷ CListBox::CListBox - CListBox 오브젝트를 생성.
▷ CListBox::CompareItem - 새로운 항목의 위치를 결정.
▷ CListBox::Create - 리스트 박스를 생성.
▷ CListBox:: DeleteItem - 항목을 제거.
▷ CListBox::Dir - 파일명을 리스트에 더함.
▷ CListBox::FindString - 스트링을 찾음.
▷ CListBox::GetCaretIndex - 항목의 색인을 결정.
▷ CListBox::GetItemData - 32비트 값을 반환.
▷ CListBox::GetText - 항목을 버퍼로 복사.
▷ CListBox::GetTextLen - 항목의 길이를 반환.
▷ CListBox::SelectString - 스트링을 선택.
▷ CListBox::SetColumnWidth - 리스트 박스의 열폭을 지정.
▷ CListBox::SetTabStops - Tab-stop 위치를 지정.


38. class CMapPtrToPtr : public Cobject


39. class CMapPtrtoWord : public CObject


40. class CMapStringToOb : public CObject


▷ CMapStringToOb::CMapStringToOb - CString 가치를 CObject 포인터에 맵함.
▷ CMapStringToOb::GetNextAssoc - 반복을 위해 다음 내용을 얻음.
▷ CMapStringToOb::RemoveAll - 맵으로부터 모든 내용을 지움.
▷ CMapStringToOb::RemoveKey - 키에 의해 지정된 내용을 지움.
▷ CMapStringToOb::SetAt - Map에 내용을 삽입.


▷ CMapStringToOb::operator[] - Map에 내용을 삽입 - SetAt을 위한 Operator


41. class CMapStringToPtr : public CObject


42. class CMapStringToString : public CObject


43. class CMapWordToOb : public CObject


44. class CMapWordToPtr : public CObject


45. class CMDIChildWnd : public CFrameWnd


▷ CMDIChildWnd::CMDIChildWnd - CMDICChildWnd 오브젝트를 생성.
▷ CMDIChildWnd::Create - MDI Child 윈도우를 생성.
▷ CMDIChildWnd::GetMDIFrame - Parent MDI 프레임을 복귀.
▷ CMDIChildWnd::MDIActivate - MDI Child 윈도우를 활성화.
▷ CMDIChildWnd::MDIRestore - MDI Child 윈도우를 회복.


46. class CMDIFrameWnd : public CFrameWnd


▷ CMDIFrameWnd::CMDIFrameWnd - CMDIFrameWnd 오브젝트를 생성.
▷ CMDIFrameWnd::CreateClient - MDICLIENT 윈도우를 생성.
▷ CMDIFrameWnd::MDICascade - Cascade된 형식에 모든 윈도우를 배열.
▷ CMDIFrameWnd::MDIMaximize - MDI Child 윈도우를 최대화함.
▷ CMDIFrameWnd::MDISetMenu - MDI 프레임 윈도우의 메뉴.
▷ CMDIFrameWnd::MDITile - Tile된 형식에 모든 Child 윈도우를 배열.


47. class CMemFile : public CFile


▷ CMemFile::CMemFile - 메모리 파일을 생성.
▷ CMemFile::~CMemFile - 메모리 파일을 닫음.


48. class CMemoryException : public CException


▷ CMemoryException::CMemoryException - CMemoryException 오브젝트를 생성.


49. struct CMemoryState


▷ CMemoryState::Checkpoint - 현재 메모리 상태의 체크 포인터를 얻음.
▷ CMemoryState::Difference - CMemoryState 유형의 차이를 계산.
▷ CMemoryState::DumpStatistics - 메모리 할당 통계를 인쇄.


50. class CMenu : public CObject


▷ CMenu::AppendMenu - 새로운 항목을 메뉴 끝에 붙임.
▷ CMenu::Attach - 윈도우 메뉴 핸들을 CMenu 오브젝트에 붙임.
▷ CMenu::CheckMenuItem - 체크 마크를 놓거나 지움.
▷ CMenu::CMenu - CMenu 오브젝트를 생성.
▷ CMenu::CreateMenu - 메뉴를 생성하고 CMenu에 붙임.
▷ CMenu::CreatePopupMenu - Pop-up 메뉴를 생성.
▷ CMenu::DeleteMenu - 특정 항목을 지움.
▷ CMenu::DestoryMenu -메뉴를 파괴, 메모리를 해제.
▷ CMenu::Detach - 메뉴 핸들을 분리하고 핸들을 복귀.
▷ CMenu::EnableMenuItem - 메뉴 항목을 가능, 불가능하게 함.
▷ CMenu::GetMenuItemID - 특정 위치에 있는 메뉴 항목의 식별자를 얻음.
▷ CMenu::GetMenuState - 특정 메뉴 항목의 상태나 항목 수를 복귀.
▷ CMenu::GetMenuString - 지정된 메뉴 항목의 라벨을 검색.
▷ CMenu::InsertMenu - 새로운 메뉴 항목을 삽입.
▷ CMenu::LoadMenu - 메뉴 자원을 로드.
▷ CMenu::LoadMenuIndirect - 메뉴를 로드하고 CMenu에 붙임.
▷ CMenu::ModifyMenu - 기존 메뉴 항목을 바꿈.
▷ CMenu::RemoveMenu - 메뉴 항목을 제거.
▷ CMenu::SetMenuItemBitmaps - 비트맵을 메뉴 항목과 관련시킴.
▷ CMenu::TrackPopupMenu - 항목 선택을 트랙함.


▷ CMenu::m_hMenu - 메뉴의 핸들을 지정.


51. class CMetaFileDC : public CDC


▷ CMetaFileDC::Close - 장치 문맥을 닫고 메타 파일 핸들을 생성.
▷ CMetaFileDC::CMetaFileDC - CMetaFileDC 오브젝트를 생성.
▷ CMetaFileDC::Create - CMetaFile 장치 문맥을 생성.


52. class CMultiDocTemplate : public CDocTemplate


▷ CMultiDocTemplate::CMultiDocTemplate - CMultiDocTemplate 오브젝트를 생성.


53. class CNotSupportedException : public CException


▷ CNotSupportedException::CNotSupportedException - 지원되지 않은 특성을 위한 요구의 결과인 예외를 나타냄.


54. class CObArray : public CObject


▷ CobArray::Add - 배열 끝에 요소를 더함.
▷ CobArray::CObArray - 비어 있는 배열을 구성.
▷ CobArray::ElementAt - 배열내의 포인터로 참조를 반환.
▷ CobArray::GetAt - 색인에서 값들을 반환.
▷ CobArray::GetUpperBound - 타당한 색인을 반환.
▷ CobArray::InsertAt - 요소를 삽입.
▷ CobArray::RemoveAll - 모든 요소를 제거.
▷ CobArray::SetAt - 색인에 대한 값을 정함.
▷ CobArray::SetAtGrow - 색인에 대한 값을 정하고 배열을 키움.


▷ CobArray::operator[] - 색인에서 요소를 지정하거나 얻음.


55. class CObject


▷ CObject::AssertValid - 원래 모습을 타당하게 함.
▷ CObject::CObject - 디폴트 구성자.
▷ CObject::Dump - Dump을 생산.
▷ CObject::GetRuntimeClass - CRuntimeClass 구조를 반환.
▷ CObject::IsKindOf - 오브젝트의 관계를 테스트.
▷ CObject::Serialize - Archive에서 오브젝트를 로드하거나 기억.


▷ CObject::operator = - 할당 조작자.
▷ CObject::operator delete - 특별한 delete 조작자.
▷ CObject::opoerator new - 특별한 new 조작자.


56. class CObList : public CObject


▷ CObList::AddHead - 헤드로 요소를 더함.
▷ CObList::CObList - 비어 있는 리스트를 구성.
▷ CObList::GetAt - 주어진 위치에서 요소를 얻음.
▷ CObList::GetHead - 헤드 요소를 반환.
▷ CObList::GetNext - 반복을 위한 요소를 얻음.
▷ CObList::GetPrev - 이전의 요소를 얻음.
▷ CObList::IsEmpty - 빈 리스트 상태를 테스트함.
▷ CObList::RemoveAll - 모든 요소를 제거.
▷ CObList::RemoveAt - 한 요소를 제거.


57. class COleClientDoc : public ColeCDocument


▷ COleClientDoc::COleClientDoc - COleClientDoc 오브젝트를 생성.
▷ COleClientDoc::RegisterClientDoc - DLL로 문서를 등록.


58. class COleClientItem : public CDocItem


▷ COleClientItem::Activate - 조작을 위해 항목을 열고 실현.,
▷ COleClientItem::CreateFromClipboard - Clipboard로부터 항목을 생성.
▷ COleClientItem::CreateNewObject - 새로운 내포된 항목을 생성.
▷ COleClientItem::Delete - 항목을 지움.
▷ COleClientItem::GetData - 데이터를 얻음.
▷ COleClientItem::GetDocument - COleClientDoc 오브젝트를 복귀.
▷ COleClientItem::GetLineUpdateOptions - 갱신 모드를 복귀.
▷ COleClientItem::GetType - 항목의 유형을 복귀.
▷ COleClientItem::OnChange - 항목을 바꿈.
▷ COleClientItem::OnRenamed - 항목을 재명명.
▷ COleClientItem::SetBounds - 항목의 막혀진 사각형을 지정.
▷ COleClientItem::SetColorScheme - 항목의 색 구조를 정함.
▷ COleClientItem::SetLinkUpdateOptions - 갱신 모드를 지정.
▷ COleClientItem::SetTargetDevice - 목표 장치를 지정.


59. class COleDocument : public CDocument


▷ COleDocument::COleDocument - COleDocument 오브젝트를 생성.
▷ COleDocument::GetNextItem - 호출에 의해 지정된 POSITION 가치의 참조.
▷ COleDocument::GetStartPosition - 처음 항목의 위치를 얻음.
▷ COleDocument::RemoveItem - 항목을 지움.


60. class COleException : public CException


▷ COleException::COleException - COleException 오브젝트를 생성.


COleException::m_status - 예외의 이유를 가리키는 상태 코드를 보유


61. class COleServer : public CObject


▷ COleServer::BegibRevoke - 단계를 시작.
▷ COleServer::COleServer - COleServer 오브젝트를 생성.
▷ COleServer::OnCreateDoc - 새로운 항목이 생성.
▷ COleServer::OnEditDoc - 기존 내포된 항목을 편집.
▷ COleServer::OnOpenDoc - 항목을 연다.
▷ COleServer::Register - DLL로 Server를 등록.


62. class COleServerDoc : public COleDocument


▷ COleServerDoc::COleServerDoc - COleServerDoc 오브젝트를 생성.
▷ COleServerDoc::OnClose - server 문서가 닫힘.
▷ COleServerDoc::OnGetEmbeeddedItem - 내포된 항목을 생성, 편집.
▷ COleServerDoc::OnGetLinkedItem - 연결된 항목을 편집.
▷ COleServerDoc::OnSetColorScheme - Color Palette를 지정.
▷ COleServerDoc::RegisterServerDoc - DLL로 문서를 등록.


63. class ColeServerItem : public CDocItem


▷ ColeServerItem::COleServerItem - COleServerItem 오브젝트를 생성.
▷ ColeServerItem::CopyToClipboard - 항목을 Clipboard로 복사.
▷ ColeServerItem::OnDoVerb - ColeClientItem::Activate 기능이 불려질 떼 불려짐.
▷ ColeServerItem::OnDraw - 항목을 Metafile에 Render.
▷ ColeServerItem::OnGetData - 항목 내용을 철회.
▷ ColeServerItem::OnShow - 항목을 보이라고 지시.
▷ ColeServerItem::SetItemName - 항목명을 정함.


64. class COleTemplateServer : public COleServer


▷ COleTemplateServer::COleTemplateServer - 오브젝트를 생성.
▷ COleTemplateServer::RunEmbedded - DLL로 Server를 등록.


65. class CPaintDC : public CDC


▷ CPaintDC::CPaintDC - CPaintDC를 생성.


66. class CPalette : public CGdiObject


▷ CPalette::AnimatePalette - Palette 안에 입력을 대치.
▷ CPalette::CPalette - CPalette 오브젝트를 생성.
▷ CPalette::CreatePalette - Palette를 만들고 CPalette 오브젝트에 부착.
▷ CPalette::FromHandle - 오브젝트에 포인터를 반환.
▷ CPalette::ResizePalette - Palette의 크기를 바꿈.


67. class CPen : public CGdiObject


▷ CPen::CPen - CPen 오브젝트를 생성.
▷ CPen::CreatePen - Pen을 초기화.


68. class CPoint : public tagPOINT


▷ CPoint::CPoint - CPoint 오브젝트를 생성.
▷ CPoint::Offset - CPoint에 개별적 값을 대입.


69. class CPrintDialog : public CDialog


▷ CPrintDialog::CPrintDialog - CPrintDialog 오브젝트를 생성.
▷ CPrintDialog::DoModal - 사용자가 선택.
▷ CPrintDialog::PrintAll - 모든 페이지의 프린트 결정.


70. struct CPrintInfo


▷ CPrintInfo::GetFromPage - 프린트되는 첫 페이지 수를 반환.
▷ CPrintInfo::GetToPage - 프린트되는 마지막 페이지 수를 반환.


71. class CPtrArray : public CObject


72. class CPtrList : public CObject


73. class CRect : public tagRECT


▷ CRect::BottomRight - CRect의 아래 포인트로 참조를 반환.
▷ CRect::CRect - CRect 오브젝트를 생성.
▷ CRect::OffsetRect - 지정된 Offset로 CRect를 옮김.
▷ CRect::Width - CRect의 폭을 계산.


74. class CResourceExceptions : public CException


▷ CResourceExceptions::CResourceExceptions - 오브젝트를 구성.


75. class CRgn : public CGdiObject


▷ CRgn::CombineRgn - 두 개의 오브젝트를 지정.
▷ CRgn::CopyRgn - CRgn 오브젝트의 복사.
▷ CRgn::CreatePolygonRgn - 다각형의 지역으로 CRgn 오브젝트를 초기화.
▷ CRgn::CreateRectRgn - 사각형의 지역으로 CRgn 오브젝트를 초기화.
▷ CRgn::CreateRectRgnIndirect - 타원형의 지역으로 CRgn 오브젝트를 초기화.
▷ CRgn::CRgn - CRgn 오브젝트를 생성.
▷ CRgn::SetRectRgn - 지정된 사각형의 지역에 CRgn 오브젝트를 지정.


76. struct CRuntimeClass


77. class CScrollBar : public CWnd


▷ CScrollBar::Create - 스클롤 바를 만들고 CScrollBar에 부착.
▷ CScrollBar::CScrollBar - CScrollBar 오브젝트를 생성.
▷ CScrollBar::SetScrollPos - 스크롤 박스의 현 위치를 지정.


78. class CScrollView : public CView


▷ CScrollView::CScrollView - CScrollView 오브젝트를 생성.
▷ CScrollView::SetScrollSizes - 스크롤 양을 지정.


79. class CSingleDocTemplate : public CDocTemplate


▷ CSingleDocTemplate::CSingleDocTemplate - 오브젝트를 생성.


80. class CSize : public tagSIZE


▷ CSize::CSize - 오브젝트를 생성.


81. class CSplitterWnd : public Cwnd


▷ CSplitterWnd::Create - 동적 Splitter 윈도우를 생성.
▷ CSplitterWnd::CSplitterWnd - CSplitterWnd 오브젝트를 생성.
▷ CSplitterWnd::GetPane - 지정된 행과 열에 Pane을 복귀.


82. class CStatic : public CWnd


▷ CStatic::Create - 정적 제어를 생성하고 CStatic 오브젝트에 붙임.
▷ CStatic::CStatic - CStatic 오브젝트를 생성.


83. class CStatusBar : public CControlBar


▷ CStatusBar::Create - 상태바를 생성하고 오브젝트와 연결.
▷ CStatusBar::CStatusBar - StatusBar 오브젝트를 생성.


84. class CStdioFile : public CFile


▷ CStdioFile::CStdioFile - CStdioFile 오브젝트를 생성.


85. class CString


▷ CString::Compare - CString 오브젝트를 문자별로 비교.
▷ CString::CString - CString 오브젝트를 초기화.
▷ CString::GetBuffer - 내부 문자 버퍼의 포인터를 복귀.


86. class CStringArray : public CObject


87. class CStringList : public CObject


88. class CTime


89. class CTimeSpan


90. class CToolBar : public CConTrolBar


▷ CToolBar::Create - 툴바를 생성 오브젝트에 연결.
▷ CToolBar::CToolBar - CToolBar 오브젝트를 생성.
▷ CToolBar::LoadBitmap - 비트맵을 로드.
▷ CToolBar::SetButtons - 버튼의 명령ID, 유형 등을 지정.


91. class CUIntArray : public CObject


92. class CUserException : public CException


93. class CVBControl : public CWnd


▷ CVBControl::Create - 제어를 만듦.
▷ CVBControl::CVBControl - CVBControl 오브젝트를 구성.


94. class CView : public CWnd


▷ CView::OnDraw - 문서의 상을 주기 위함.
▷ CView::OnPrint - 문서를 프린트.


95. class CWinApp : public CCmdTarget


▷ CWinApp::CWinApp - CWinApp 오브젝트를 생성.
▷ CWinApp::LoadIcon - 아이콘 자원을 로드.
▷ CWinApp::LoadVBXFile - VBX 제어파일을 로드.
▷ CWinApp::OnContextHelp - Help를 조절.
▷ CWinApp:Run - 디폴트 메시지 루프를 실행.
▷ CWinApp:WinHelp - WinHelp 윈도우 기능을 부름.


96. class CWindowDC : public CDC


▷ CWindowDC::CWindowDC - CWindowDC 오브젝트를 생성.


97. class CWnd : public CCmdTarget


98. class CWordArray : public CObject
▶ 클래스의 요약

1. Root Class

Microsoft Foundation Class Libray의 대부분 클래스는 클래스 위계의 루트의 단일 Base class로부터 파생된다.
CObject는 매우 낮은 오버헤드를 가진 그것으로부터 파생된 모든 클래스에 많은 유용한 능력을 제공한다.

▷ CObject
모든 다른 클래스의 궁극적 Base class.
데이터를 시리얼아이즈(Serialize)하고 런타임 클래스 정보를 얻어내거나 디버깅시에 출력 진단의 역할을 한다.


2. 응용 건설 클래스 (Application Architecture Classes)

이 범주의 클래스는 구조 응용의 건설에 기여한다. 그것들은 Windows를 위해 쓰여진 대부분 응용에 일반적인 기능을 제공한다. 특정 응용 기능을 첨가하기 위해 구조를 채운다. 일반적으로 건설 클래스로부터 새로운 클래스를 파생하고 때때로 새로운 멤버를 첨가하거나 기존멤버 기능을 변경함으로써 그렇게 할 수 있다.

구조는 Windows의 응용으로서 기능의 작동 시간에 협동하는 클래스 오브젝트의 그룹으로 구성된다. 주요
오브젝트는 다음과 같다. :

&#8228; CWinApp 클래스로부터 나온 응용 오브젝트.
&#8228; CDocument 클래스로부터 나온 것과 윈도우와 관계된 하나나 그 이상의 문서 오브젝트.
&#8228; 각각 문서에 붙여지거나 Window와 관련된 CView 클래스로부터 나온 하나나 그 이상의 View 오브젝트.

2-1. Window 응용 클래스

각 응용은 하나와 한 응용 오브젝트만을 가진다. :
이 오브젝트는 작동 프로그램의 다른 오브젝트와 코디네이트하고 CWinapp에서 파생된다.

▷ CWinApp
윈도 애플리케이션 오브젝트를 생성시키는 Base Class.
애플리케이션 프로그램을 초기화 시키고 실행하거나 종료하는 기능을 한다.

2-2. 명령 관련 클래스 (Command-Related Classes)

사용자가 마우스로 메뉴를 선택하거나 제어 바 버튼을 선택함으로써 응용과 대화할 때 응용은 적당한 명령
목표 오브젝트의 영향을 준 사용자 인터페이스 오브젝트로부터 메시지를 보내는데 그것은 CCmdTarget 클래스이다.
CCmdTarget으로부터 나온 명령 목표 클래스는 CWinApp, CWnd, CDocTemplate, CDocument, CView와 그것들로부터 나온 클래스를 포함한다. CCmdUI 클래스는 오브젝트의 상태를 갱신하기 위한 메뉴나 버튼같은 명령 사용자 인터페이스 오브젝트를 표시한다.

▷ CCmdTarget
메시지를 받고 응답할 수 있는 오브젝트의 모든 클래스의 Base class로서 Serve 한다.

▷ CCmdUI
메뉴 항목이나 제어 바 같은 버튼 같은 사용자 인터페이스 오브젝트를 갱신하기 위한 프로그램의 인터페이스를
제공한다. 명령 목표 오브젝트는 이 proxy 오브젝트로서 사용자 인터페이스 오브젝트를 가능, 불가능, 체크
또는 체크 하지 않는 등의 일을 한다.

2-3. 문서/뷰 클래스 (Document/View Classes)

문서 템플릿 오브젝트에 의해 생성된 문서 오브젝트는 응용의 데이터를 관리한다. View 오브젝트는 Window의 Client 영역을 표시하는데 문서의 데이터를 보이고 사용자가 그것과 대화하도록 허락한다.

▷ CDocTemplate
문서 템플릿을 위한 Base Class.
문서 템플릿은 문서, 뷰, 프레임 윈도우 오브젝트의 생성을 코디네이트한다.

▷ CSingleDocTemplate
단일 문서 인터페이스(SDI)의 문서를 위한 템플릿.
SDI 응용은 한 번에 한 개 열려진 문서만을 갖는다.

▷ CMultiDocTemplate
다중 문서 인터페이스(MDI)의 문서를 위한 템플릿.
MDI 응용은 한 번에 여러개(중복의) 열려진 문서를 가질 수 있다.

▷ CDocument
애플리케이션이 지정한 문서의 Base Class.
사용자의 문서들은 이 CDocument 클래스로부터 상속받아 마음대로 사용할 수 있다..

▷ CView
문서 안에 있는 데이터를 뷰를 통하여 화면에 보일수 있도록 하는 클래스.
View 데이터를 보이고 데이터를 편집하거나 선택하기 위해 사용자 입력을 취한다. 사용자들의 View들은 CView
로부터 상속받아 자기 나름대로 사용할 수 있다.

▷ CPointInfo
프린트나 프린트 사전 검사 업무에 대한 정보를 포함하는 구조체.
CView의 프린트 생성에 의해 사용된다.

▷ CCreateContext
문서, 뷰, 프레인 윈도, 문서 템플릿에 대한 포인터를 저장하고 있는 구조체이다.
이 구조체는 문서 템플릿에 의하여 윈도 생성 함수에 전해지게 된다.

3. Visual 오브젝트 클래스

시중에 있는 MFC 관련 책에 이 부분을 가상 오브젝트 클래스라고 번역하였는데, 이것은 오류이다. 왜냐하면 이 클래스는 윈도나 다이얼로그, 메뉴, 각종 컨트롤 등 다분히 시각적인 오브젝트들을 다루기 때문이다. 따라서 윈도의 획일화된 유저 인터페이스가 싫다고 자신만의 윈도 인터페이스를 만들려면 이러한 클래스를 반복해서 알아두어야 할 것이다.

이 범주의 클래스는 시각적인 사용자 인터페이스 오브젝트를 표시한다. :
윈도우, 다이얼로그 박스, 제어, 메뉴. 또한 포함된 것들은 윈도우의 내용을 렌더링하는데 고용된 오브젝트와 관계한다. :: 장치 문맥과 펜, 브러쉬 같은 드로잉 오브젝트

3-1. Window 클래스

혹시 윈도 API 함수들을 사용해 본 User들이 있는지는 모르겠다. 거기엔 HWND라는 윈도 핸들이 수시로 함수
파라미터로 전해지고, 내부에서 사용되어 매우 불편하였다. 그러나 MFC를 사용하게 되면 HWND라는 볼 수 없는데 그 이유는 바로 윈도 클래스가 HWND를 안보이도록 캡슐화(Encapsulation) 시켜 놓았기 때문이다. 이러한 캡슐화의 장점은 보다 쉽고 편하게 프로그램할 수 있는 환경을 제공해준다(물 필요한 경우 멤버 변수에 대한 접근이 가능하므로 기존의 API 함수들과 연결이 가능하다).

▷ CWnd
모든 윈도우를 위한 Base Class.
기본적인 SDK 함수들을 MFC에 맞도록 캡슐화시켜 놓았다. 아래의 파생 클래스를 사용한다. 또는 CWnd로
부터 직접 자신의 클래스를 끌어낸다.

▷ CFrameWnd
메인 프레임에 관한 윈도 클래스.
SDI 응용의 주요 프레임 윈도우를 위한 Base Class.

▷ CMDIFrameWnd
MDI 응용의 주요 프레임 윈도우를 위한 Base Class.

▷ CMDIChildWnd
MDI 응용의 문서 프레임 윈도우를 위한 Child Window Class

3-2. View 클래스

문서 안에 있는 내용을 윈도의 클라이언트 영역에 표시하고 나타내는 역할을 하는데 뷰의 종류도 특성에 따라 여러 가지가 존재한다.

▷ CView
문서 데이터의 특정응용 View를 위한 Base Class.
View는 데이터를 보이고, 데이터를 편집하거나 선택하기 위해 사용자 입력을 취한다. CView로부터 View
클래스를 파생하거나 자동 스크롤링을 위해 CScrollView를 사용한다.

▷ CScrollView
Scrolling 능력을 가진 View를 위한 Base Class.
자동 스크롤링을 위해 CScrollView로부터 View 클래스를 끌어낸다.

▷ CFormView
Dialog 자원에 정의된 레이아웃을 가진 Scroll View.
Dialog 자원에 기초한 사용자 인터페이스를 실현하기 위해 CFormView로부터 끌어 낸다.

▷ CEditView
구문, 편집, 조회, 스크롤링 능력을 가진 View.
문서에 구문에 기초한 사용자 인터페이스를 제공하기 위해 이 클래스를 사용한다.

3-3. Dialog 클래스

CDialog 클래스와 그 파생 클래스는 다이얼로그 박스 기능을 캡슐화한다. 다이얼로그 박스는 윈도우의 특정한 종류이기 때문에 Cdialog는 CWnd로부터 나온다. Cdialog로부터 다이얼로그 클래스를 끌어내거나 파일을 열거나 저장하고 프린트 폰트나 색의 선택 또는 조회하고 치환하는 작업을 초기화하는 것같은 다이얼로그 박스를 위한 보통의 Dialog Class의 하나이다.

▷ CDialog
다이얼로그 클래스들에 대한 Base Class.
다이얼로그의 종류는 반드시 그 다이얼로그에서 OK나 Cancel을 선택하기 전까지 제어권이 넘어가지 않은
Modal 다이얼로그와 다른 윈도로 제어권이 넘어가는 Modeless 다이얼로그 두 가지로 나뉘어진다. 일반적으로
MFC가 제공하는 기본 다이어로그들은 Modal 다이얼로그이다.

▷ CDataExchange
Dialog box를 위한 정보의 초기화와 타당화를 공급한다.

▷ CFileDialog
파일을 열거나 저장, 또는 디렉토리 찾아가기 등의 일을 하는 표준 다이얼로그 클래스.

▷ CPrintDialog
파일을 프린트하거나 여러 가지 프린트 옵션을 지정하는 다이얼로그 클래스.

▷ CFontDialog
폰트를 선택하거나 글자 크기와 속성을 지정하는 표준 다이얼로그 클래스.

▷ CColorDialog
색을 선택하는 표준의 다이얼로그 클래스.

▷ CFindReplaceDialog
문자를 검색하고 지정한 문자열로 치환하는 표준 다이얼로그 클래스.

3-4. 제어 클래스

제어 클래스는 Pen 계산, 제어 바, VBX custom 제어를 위한 Microsoft Windows의 비트맵, 편집 제어를 가진 버튼을 포함하는 새로운 제어뿐 아니라 버튼, 목록 박스, Combo box 같은 표준의 Windows 제어에 프로그램의 인터페이스를 제공한다.
VC++ AppStuio를 사용한다면 아래의 컨트롤들을 쉽게 다이얼로그에 포함시키며 비주얼한 작압을 할 수 있다.

▷ CStatic
정적-구문 제어 윈도우.
정적 제어는 라벨과 박스에 익숙하거나 다이얼로그 박스나 윈도우의 다른 제어를 나눈다.

▷ Button
다이얼로그 박스에서 흔히 볼 수 있는 체크 박스나 라디오 버튼.

&#8680; CBitmapButton
비트맵을 포함시킬 수 있는 버튼 클래스.
구문 캡션이 이런 비트맵을 가진 버튼.

▷ CButton
버튼 제어 윈도우.
클래스는 다이얼로그 박스나 윈도우의 푸시 버튼, 체크박스 또는 라디오 버튼에 프로그램의 인터페이스를
제공한다.


▷ CEdit
편집 가능한 구문 제어 윈도우.
편집 제어는 사용자로부터 구문상 입력을 취한다.

&#8680; CHEdit
사용자가 표준의 펜 편집을 사용하는 구문을 입력하고 수정할 수 있는 펜 편집 제어를 위한 윈도우.
이 클래스는 CEdit 특성 이외에 펜 컴퓨팅을 할 수 있도록 구현된 클래스인데 기본적인 키보드 중심의
에디터 컨트롤 이외에도 필기체를 인식할 수 있는 메커니즘이 포함되어 있다.
&#8680; CBEdit
사용자가 표준의 펜 편집을 사용하는 구문을 입력하고 수정할 수 있는 펜 편집 제어를 위한 윈도우.
이 제어는 구문 요소를 인도하는 박스를 제공하는다는 점에서 CHEdit와 다르다.
CHedit의 특성 외에 필기체 인식의 정확성을 높이기 위하여 틀린 글자로 처리되었을 때 수정이 가능한
박스를 첨가시킨 클래스이다.

▷ CListBox
리스트 박스 제어 윈도우.
리스트 박스는 사용자가 보이고 선택할 수 있는 항목의 목록을 보인다.
여러 아이템을 박스 안에 나열해서 표현할 수 있고 한 아이템을 선택하는 것이 가능한 박스이다.

▷ CComboBox
Combo-Box 제어 윈도우.
Combo-Box는 편집 제어+목록 박스로 이루어진다.


▷ CControlBar
HWND에 기초한 Child 제어나 Toolbar 버튼같은 HWND에 기초하지 않는 제어를 포함하는 프레임 윈도우의
꼭대기나 바닥에 배열된 윈도우.
Toolbar와 Status bar 같은 제어 바를 위한 Base Class.

&#8680; CStatusBar
Status bar 제어 윈도우를 위한 Base Class.
창 하단에 있는 상태바에 대한 클래스.
&#8680; CToolbar
HWND에 기초하지 않은 비트맵 명령 버튼을 포함하는 툴 바 제어 윈도우.
창 상단에 기본적으로 위치한 작은 비트맵 버튼들의 연속된 집합(툴바)과 관련된 클래스.
&#8680; CScrollbar
창의 우측이나 좌측에 있는 스크롤바에 대한 클래스.
클래스는 사용자가 범위내에 위치를 정할 수 있는 것을 통해 다이얼로그 박스나 윈도우의 제어처럼
사용자를 위한 스크롤 바의 기능을 제공한다.
&#8680; CDialogBar
컨트롤바의 형태로된 Modeless 다이얼로그 박스에 관련된 클래스.

▷ CVBControl
비주얼베이식에서 사용되던 VBX를 제어할 수 있는 클래스.

▷ CSplitterWnd
여러개의 툴로 나뉘어질수 있는 창을 제어하는 클래스.

3-5. 메뉴 클래스

CMenu 클래스는 응용의 메뉴에 접근 하는 것으로써 인터페이스를 제공한다. 그것은 작동시간에 동적으로
메뉴를 조작하는데 유용하다. : 예를 들어, 문맥에 따라 메뉴 항목을 첨가하거나 지우기를 원할 수 있다.

▷ CMenu
응용의 메뉴 바와 팝업 메뉴의 HMENU handle을 캡슐화한다.

3-6. 장치 문맥 클래스 (Device-Context Class)

다음 클래스의 대부분은 Windows 장치 문맥의 handle을 캡슐화한다. 장치 문맥은 Display나 프린터 같은 장치의 속성을 드로잉하는데 대한 정보를 포함하는 Windows 오브젝트이다.

모든 드로잉 호출은 장치 문맥 오브젝트를 통해 만들어진다. CDC로부터 파생된 첨가의 클래스는 Windows의 metagile을 위해 제공을 포함하는 특정한 장치 문맥 기능을 캡슐화한다.

▷ CDC
장치 문맥을 위한 Base Class.
화면 출력과 프린터와 같은 비화면 출력을 다룰 수 있는 멤버 함수들이 있는 클래스이다.

&#8680; CPaintDC
윈도우의 OnPaint 멤버 기능과 View의 OnDraw 멤버 기능에서 사용된 디스플레이 문맥.
이 클래스를 생성할 때 자동적으로 BeginPaint가 실행되고 소멸될 때 EndPaint가 실행되므로 프로그램
코드에 BeginPaint와 EndPaint를 포함 시킬 필요가 없다.
&#8680; CClientDC
윈도의 클라이언트 영역에 화면 출력하기 위한 것이다.
예를 들면 마우스 포인트가 클라이언트 영역에 있을 때 이중 클릭 되었다. 이 때 원을 그리려는 프로
그램을 작성한다면 이 클래스를 사용한다.
&#8680; CWindowDC
고객과 프레임 영역을 포함하는 전체 윈도우를 위한 디스플레이 문맥.
전체 윈도에 대한 화면 출력 클래스로써 클라이언트 영역뿐만 아니라 메임프레임 영역에도 적용 가능하다.
&#8680; CMetaFileDC
Windows의 metafile을 위한 장치 문맥.
Windows Metafile은 이미지를 생성하기 위해 다시 Play될 수 있는 그래픽 장치 인터페이스(GDI) 명령의
배열을 포함한다. 이미지를 BMP나 PCX와 같이 통째로 저장하는 것이 아니고 그래픽 명령으로 저장되어
있기 때문에 metafile은 크기가 작을뿐더러 수정이 쉽다. CMetaFileDC의 멤버 기능에 만들어진 호출은
metafile에 기록된다.

3-7. 오브젝트 클래스의 드로잉

다음 클래스는 handle에 기초한 GDI 오브젝트를 캡슐화한다. 그것들은 C++ 구문을 가진 GDI 드로잉 오브젝트를 조작하도록 허락한다.

▷ CGdiObject
GDI 드로잉 툴을 위한 Base Class.

&#8680; CBitmap
비트맵을 조작하는 인터페이스를 제공하는 GDI 비트맵을 캡슐화한다.
&#8680; CBrush
장치 문맥의 현재 Brush로서 선택될 수 있는 GDI Brush를 캡슐화한다.
&#8680; CFont
장치 문맥의 현재 Font로서 선택될 수 있는 GDI Font를 캡슐화한다.
&#8680; CPalette
응용과 디스플레이 같은 색 출력 장치 사이의 인터페이스로서 사용자를 위해 GDI 색 팔레트를 캡슐화 한다.
&#8680; CPen
장치 문맥에서 현재 Pen으로서 선택될 수 있는 GDI Pen을 캡슐화한다.
&#8680; CRgn
윈도우내의 생략 또는 Polygonal 영역을 조작하기 위한 GDI 영역을 캡슐화한다.
CDC 클래스의 Clipping 멤버 기능을 가진 연결에 사용된다.


4. 일반 목표 클래스

이 범주의 클래스는 파일 I/O, 예외 조정같은 일반 목표 서비스의 다양함을 제공한다. 또한 포함된 것들은 데이터의 집합을 저장하는 배열과 같은 목록의 클래스이다.

4-1. 파일 클래스

만약 자신의 입출력 프로세서를 쓴다면 특별히 CArchive와 같은 CFile의 다음 클래스를 사용한다. 보통은 이런 클래스로부터 파생할 필요가 없다. 만약 응용구조를 사용한다면 File 메뉴의 Open과 Save 명령의 디폴트 실현은 문서가 그 내용을 직렬화하는 방법에 대한 세부사항으로 제공된 파일 I/O를(CArchive를 사용하는) 조정한다.

▷ CFile
이진수의 디스크 파일의 프로그램 인터페이스를 제공한다.

&#8680; CMemFile
Memory를 파일처럼 쓸수 있도록 프로그램 인터페이스를 제공한다.
&#8680; CStdioFile
Buffer된 strem disk file.
일반적인 텍스트 파일을 다룰 수 있는 프로그램 인터페이스를 제공한다.
&#8680; CArchive
CFile과 같이 사용되어 데이터 객체에 대한 Serialization을 구현하는데 중요한 인터페이스 제공.

4-2. 진단 (Diagonstics)

프로그램을 디버깅하는 도중에 CDumpContext와 CMemoryState가 쓰이곤 하는데 이것은 메모리의 내용을
통째로 보일수 있게 하거나 메모리의 상태를 진단할 수 있도록 하는 클래스이다.

▷ CDumpContext
메모리의 내용을 통째로 뽀이도록 하는 클래스.
진단 Dump를 위한 목적지를 제공한다.

▷ CMemoryState
메모리 사용을 위한 Snapshot을 제공한다.
이 클래스는 또한 초기와 후기의 Snapshot을 비교하기 위해 사용된다.

▷ CRuntimeClass
작동 시간에 오브젝트의 정확한 클래스를 결정하기 위해 사용된다.

4-3. 예외 처리(Exception)

Class Libray는 CException 클래스에 기초한 예외 조정 메커니즘을 제공한다. 응용 구조는 그 코드의 예외를 사용한다. 또한 사용자 자신의 것에서 그것들을 사용할 수 있다.

▷ CException
여러 가지 예외 처리들에 대한 Base Class.

&#8680; CArchiveException
데이터 기록에 대한 예외 처리 클래스.
&#8680; CFileException
파일에 관련된 예외 처리 클래스.
&#8680; CMemoryException
메모리 고장에 관한 예외 처리 클래스.
&#8680; CNotSupportedException
지원되지 않은 특성의 호출하였을 때 발생하는 예외 처리.
&#8680; CResourceException
Windows 자원을 로드하는데 대한 실패로부터 나온 예외 처리.
&#8680; COleException
OLE 프로세싱의 실패로부터 생긴 예외.
이 클래스는 고객과 Server에 의해 사용된다.
&#8680; CUserException
사용자가 초기화한 조작을 멈추는데 사용된 예외.
사용자는 전형적으로 이 예외가 생기기 전에 문제를 인식하게 된다.

4-4. 수집 (집합체(Collections) 관련) 클래스

데이터 집합체를 조정하기 위해 Class Libray는 수집 클래스의 그룹을 제공한다. - 배열 목록, Map - 그것들을 다양한 오브젝트와 미리 정의된 유형을 유지할 수 있다. 수집은 역동적으로 크기가 정해진다.
배열과 리스트, 데이터 오브젝트간의 매핑 클래스드로써 중요도는 떨어지지만 요긴하게 쓰이는 클래스 집합이다. 이 클래스들은 윈도 프로그램에 쓰일 수 있지만 도스 프로그램에서도 쓰일 수 있으며 이와 유사한 클래스를 필요로 할 때 이 클래스들로부터 파생시켜 만들 수 있다.


&#10145; 배열 관련 클래스
▷ CByteArray
배열에 BYTE 형태의 원소들을 배열로 저장.

▷ CDWordArray
배열에 더블 워드 형태의 원소들을 배열로 저장.

▷ CObArray
CObject에서 파생된 클래스들 또는 CObject 클래스 그 자체에 대한 포인터를 배열로 저장.

▷ CPtrArray
배열에 void(총칭 pointer)의 포인터를 저장한다.

▷ CStringArray
배열의 CString 오브젝트를 저장한다.

▷ CWordArray
WORD 형태의 원소들을 배열로 저장한다.

▷ CUIntArray
UNIT 형태의 원소들을 배열로 저장한다.

&#10145; 링크드 리스트 관련 클래스
▷ CObList
CObArray와는 달리 CObject에서 파생된 클래스들 또는 CObject 클래스 그 자체에 대한 포인터를 링크드
리스트 형태로 저장.

▷ CPtrList
링크된 목록에 void(총칭의 pointer)의 포인터를 링크드 리스트로 저장한다.

▷ CStringList
링크된 목록에 CString 오브젝트를 링크드 리스트로 저장한다.

&#10145; 오브젝트간 매핑 클래스
▷ CMapPtrToWord
WORD 유형의 데이터에 대한 void pointer를 사상(Map)한다. WORD 유형의 데이터를 찾기 위한 키로서 void
pointer를 사용한다.

▷ CMapPtrToPtr
void pointer의 void pointer map 한다. 다른 void pointer를 찾기 위한 키로서 void pointer를 사용한다.

▷ CMapStringToOb
CObject pointer에 대한 CString 오브젝트를 사상한다. CObject pointer를 찾기 위한 키로서 CString 오브젝트를 사용한다.

▷ CMapStringToPtr
void pointer에 대한 CString 오브젝트를 사상한다. 한다. void pointer를 찾기 위한 키로서 CString 오브젝트를
사용한다.

▷ CMapStringToString
CString에 대한 CString 오브젝트를 사상한다. 다른 CString 오브젝트를 찾기 위한 키로서 CString 오브젝트를
사용한다.

▷ CMapWordToOb
CObject pointer에 대한 WORD유형의 데이터를 사상한다. CObject pointer를 찾기 위해 WORD 유형의 데이터를
사용한다.

▷ CMapWordToPtr
void pointer에 대한 WORD유형의 데이터를 사상한다. void pointer를 찾기 위해 WORD 유형의 데이터를
사용한다.

4-5. 보조의 Support Classes

다음의 클래스는 C++ 구문의 편리한 사용을 허락하는 드로잉 좌표, 문자 스트링, 시간과 날짜 정보를 캡슐화한다. 이런 오브젝트는 Microsoft Foundation Class Library의 Windows 클래스의 멤버 기능에 대한 매개 변수로서 넓게 사용된다.

CPoint, CSize, CRect는 Windows Software Development Kit(SDK)에서 각각 POINT, SIZE, RECT 구조에 응답하기 때문에 이런 C 언어 구조를 사용할 수 있을 때마다 C++ 클래스의 오브젝트를 사용할 수 있다. 클래스는 그것들의 멤버 기능을 통해 유용한 인터페이스를 제공한다.

CString은 메우 융통적인 동적 문자 스트링을 제공한다. CTime과 CTimeSpan은 시간과 날짜 값을 표시한다.

▷ CPoint
좌표(x, y)쌍을 보유한다.

▷ CSize
거리, 관계된 위치, 또는 쌍의 가치를 보유한다.

▷ CRect
네모의 영역을 유지한다.

▷ CString
문자 String을 유지한다.

▷ Ctime
절대적인 시간과 날짜 가치를 보유한다.

▷ CTimeSpan
비교의 시간과 날짜를 보유한다.


5. OLE 클래스

Class Library는 OLE(Object Linking and Embeddind)을 지원하는 4개의 범주를 제공한다. : OLE base 클래스, OLE 고객 클래스, OLE server 클래스, OLE 예외 클래스

5-1. OLE Base 클래스

이 범주에 열거된 클래스는 다른 범주에 더 특정화된 OLE 클래스의 Base Class로서 Server 한다. 이런 클래스는
완전하기 위해 여기에 열거된다. 직접 그것들을 사용하지는 않는다.

▷ COleDocument
COleClientDoc와 COleServerDoc 클래스의 추상적 Base Class.
COleDocument는 CDocItem 유형의 항목을 위한 컨테이너이다.
COleClientDoc는 COleServerDoc가 COleServerItem 유형의 항목을 포함하는 동안 ColeCI ientItem 유형의
항목을 포함한다.

▷ CDocItem
문서의 부분인 항목.
COleClientItem과 ColeServerItem의 추상적 Base Class.

5-2. OLE Client Classes

Class Library는 OLE 고객 응용에서 사용을 위한 두 클래스를 제공한다. COleClientDoc는 고객 문서를 표시하는데, 이는 COleClientItem 유형의 항목의 수집을 유지한다. COleClienyItem은 내포되거나 링크된 OLE 항목의 고객 View를 표시한다. 이런 클래스는 보이는대로 추상적 Base Class로부터 나온다.

▷ COleClientDoc
고객 항목을 관리 하는 고객 문서 클래스.
OLE 고객 기능을 실현하기 위해 CDocument 대신 이 클래스로부터 문서를 파생해야 한다.

▷ COleClientItem
내포되거나 링크된 OLE 항목에 연결된 고객의 편을 표시하는 고객 항목 클래스.
이 클래스로부터 고객 항목을 파생해야 한다.

5-3. OLE Server 클래스

OLE Server 응용은 그것이 공급하는 문서 유형의 각각을 위한 Server 오브젝트를 가진다. Server는
CDocTemplate 오브젝트가 문서를 생성하고 유지하는 똑같은 방법으로 Server 문서를 생성하고 유지한다.

▷ COleServer
Server 문서를 생성하고 관리하는 Server 응용 클래스.
응용이 지원하는 각 Server 유형을 위해 이 클래스를 파생해야 한다.

▷ COleServerDoc
Server 항목을 생성하고 관리하는 Server 문서 클래스.
CDocument 대신 이 클래스로부터 Server 문서를 파생해야 한다.

▷ COleServerItem
내포되거나 연결된 OLE 항목의 연결의 Server 편을 표시하는 Server 항목 클래스.
이 클래스로부터 Server 항목을 파생해야 한다.

▷ COleTemplateServer
문서 템플릿을 사용하는 Server 문서를 관리하는 OLE Server 실현 클래스.
이 클래스는 COleServer로부터 파생하는 대신으로서 직접 사용될 수 있다.

5-4. OLE 예외 클래스

Class Library는 OLE 프로세싱동안 나타나는 예외의 상황을 위해 CException으로부터 나온 예외 클래스를 제공한다.

▷ COleException
OLE 프로세싱의 실패로부터 생긴 예외.
이 클래스는 고객과 Server에 의해 사용된다.


6. 매크로와 글로벌 변수들

가끔 MFC 예제 프로그램 코드를 보면 이상하고 야릇한 매크로나 글로벌 변수(함수)들을 보게 된다. 개발자의 의도는 좀 더 편리하게 사용하기 위해서 매크로를 사용하였겠지만 막상 사용자들은 매크로의 담긴 의미들을 알기 힘들어 오히려 난해하게 여겨졌던게 사실이다.
물론 이 부분은 클래스에 관련된 부분은 아니지만 MFC 코드를 이해하는데 필요한 요소이기 때문에 어떤
내용들이 포함되어 있는지 요약만 하도록 하겠다. 매크로와 데이터형이 어떻게 선언되었는지 궁금한 User는
mfcinclude 디렉토리에서 를 참조하기 바란다.

6-1. 데이터 형 (Data Type)

Window SDK 시절부터 데이터형을 새롭게 정의하였는데 일반적으로 많이 쓰이는 데이터형에 대해서는 알아둘 필요가 있을 것 같다.


이외에 두 개의 데이터 타입이 MFC에서 새롭게 정의 되었는데 그것은 다음과 같다.

&#8228; POSITION : MFC의 Collection 클래스에서 사용되는 원소들의 위치 지정에 사용되는 데이터형.
&#8228; LPCRECT : RECT 구조체에 대한 32bit 포인터.

6-2. 런타임 오브젝트 모델 서비스 (Run-Time Object Model Service)

CObject와 CRuntimClass등은 각 오브젝트들에 대한 몇 가지 서비스를 포함하고 있다. 예를 들면 천타임 시의 클래스 관련 정보, 계열화(Serialization), 동적인 오브젝트 생성등이 그러한 것인데 CObject로부터 파생된 모든 클래스들은 이러한 기능들을 상속받게 된다.

&#8228; 매크로 : DECLARE_DYNAMIC, DECLARE_DYNCREATE, DECLARE_SERIAL, IMPLEMENT_DYNAMIC
IMPLEMENT_DYNCREATE, IMPLEMENT_SERIAL, RUNTIME_CLASS.

6-3. 진단 서비스 (Diagnostic Services)

MFC는 디버딩을 쉽게 할 수 있도록 여러 가지 진단 서비스를 갖추고 있다. 매크로뿐만 아니라, 글로벌 변수 및 함수들을 통하여 버그에 대한 진단을 내릴 수 있다. 진단 기능을 하는 것들은 다음과 같다. 여기서 글로벌
변수는 afx로 시작하고 글로벌 함수는 Afx로 시작하는 것을 주목하기 바란다.

&#8228; 매크로 : ASSERT, ASSERT_VALID, DEBUG_NEW, TRACE, VERIFY.
&#8228; 글로벌 변수 : afxDump, afxMemDF, afxTraceEnabled, afxTraceFlags.
&#8228; 글로벌 함수 : AfxCheckMemory, AfxDump, AfxEnableMemoryTracking, AfxIsMemoryBl


Posted by 모과이IT
,

1. DC얻기

  CClientDC dc(this);


2. Client 영역 구하기

  GetClientRect(&rect);

  WM_SIZE 메시지발생후 cx,cy 사용


3. 문자열 사각형안에 그리기

  pDC->DrawText(문자열,사각형,Style);

  Style : DT_BOTTOM - 문자열을 사각형 맨아래줄에배열 반드시DT_SINGLELINE과 함께사용

            DT_CENTER - 문자열을 가로중앙에 배치

            DT_VCENTER - 문자열을 세로중앙에 배치

            DT_LEFT,RIGHT - 문자열을 좌,우로 배치

            DT_SINGLELINE - 문자열을 한줄로만 쓴다


4. Brush 사용법

  CBrush brushname(RGB(red,green,blue)); //브러쉬 생성

  //이전Brush 저장, 새로운 Brush 선택

  CBrush *oldBrush=pDC->SelectObject(&brushname);

  pDC->SelectObject(oldBrush); //원래의 브러쉬로 반환


5. Pen사용법

  CPen pen(Pen Style,RGB(red,green,blue)); //브러쉬생성

  //Style: PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_GEOMETRIC,PS_COSMETRIC

                - 펜종류

              PS_ENDCAP_ROUND,PS_ENDCAP_SQUARE - 펜끝을 둥글게,각지게 설정

  CPen *oldPen=pDC->SelectObject(&pen); //이전Pen저장, 새로운 Pen설정

  pDC->SelectObject(oldPen); //펜반환


6. 화면다시그리기

  View Class에서 - Invalidate(TRUE) : 화면을 지우고다시그린다

                            Invalidate(FALSE) : 화면을 덮어씌운다

  UpdateAllViews(NULL);  // Doc Class에서 View 의 OnDraw 호출

  RedrawWindow();


7. 메시지,함수 수동으로 넣기 (EX)버튼클릭함수넣기

  헤더파일의 AFX_MSG_MAP 부분에 함수를 정의

  // .cpp파일의 AFX_MSG 부분에 메시지를 추가한다

  EX) afx_msg void funcName();

  // ID 등록:  View 메뉴의 Resource Symbol 에 들어가서 메뉴 ID 를 등록해준다..

  EX) ON_BN_CLICKED(ID_NAME,funcName).

  // .cpp파일의 맨아래에서 함수를 정의한다

  EX) void CClass::funcName() { ... }


8. 마우스커서 바꾸기

  리소스탭에서 커서를 그리고 저장한뒤 ID값은 준다음

  SetCapture(); //커서의입력을 클라이언트영역을 벗어나더라도 받아낸다

  SetCursor(AfxGetApp()->LoadCursor(nIDResource));

  //APP클래스의 LoadCursor View의 SetCursor 사용

  ReleaseCapture(); //SetCursor()상태를 해제한다


9. 색상표 사용하기

  CColorDialog dlg;

  if(dlg.DoModal()==IDOK) //Dialog 를 띄운후 OK버튼을누르면 실행할부분

  MemberFunc: GetColor() //선택된 색상을 받아온다 return 형은 COLORREF 형


10. 팝업메뉴 만들기

  CMenu menu; //메뉴 객체생성

  CMenu *pmenu; //메뉴 포인터생성

  menu.LoadMenu(IDR_MAINFRAME); //메뉴를 불러온다

  pmenu=menu.GetSubMenu(3); //메뉴의 3번째 메뉴를 가져온다

  menu.CheckMenuItem(ID_MENU,m_kind==ID_MENU ? MF_CHECKED : MF_UNCHECKED); //메뉴 체크하기 (메뉴 ID, ID 체크조건)

  pmenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this) //(TMP_Style,x좌표,y좌표,hWnd) 메뉴 띄우기


  *주의사항*

  [안내]태그제한으로등록되지않습니다-OnContextMenu(CWnd* pWnd, CPoint point)  //여기서 point 는 스크린 기준이고,

  OnRButtonDown(UINT nFlags, CPoint point)  //여기서 point 는 클라이언트 기준이다!


11. 클라이언트 포인터를 스크린 포인터로 변경

  ClientToScreen(&point);


12. 그림판기능

  if(m_flag==FALSE)  return;   //m_falg=그리기 기능 참,거짓설정  그리기 아니면 빠져나간다

        CClientDC dc(this);

        CPen myPen(PS_SOLID,m_width,m_color);

        CPen *pOldPen=dc.SelectObject(&myPen);

        switch(m_shape)

        {

        case ID_FREELINE: //자유선그리기

                dc.MoveTo(m_oldpt.x,m_oldpt.y); //지난포인터부터

                dc.LineTo(point.x,point.y); //새포인터까지 그린다

                break;

        case ID_RECT: //사각형그리기

                dc.SetROP2(R2_NOTXORPEN);

                dc.Rectangle(m_spt.x,m_spt.y,m_oldpt.x,m_oldpt.y);  //지워지는 효과

                dc.Rectangle(m_spt.x,m_spt.y,point.x,point.y); //그려지는 효과

                break;

        case ID_ELLIPSE: //원그리기

                dc.SetROP2(R2_NOTXORPEN);

                dc.Ellipse(m_spt.x,m_spt.y,m_oldpt.x,m_oldpt.y);  //지워지는 효과

                dc.Ellipse(m_spt.x,m_spt.y,point.x,point.y); //그려지는 효과

                break;

        case ID_LINE: //선그리기

                dc.SetROP2(R2_NOTXORPEN);

                dc.MoveTo(m_spt.x,m_spt.y); //시작점부터

                dc.LineTo(m_oldpt.x,m_oldpt.y); //지난점까지 그은선을 지운다

                dc.MoveTo(m_spt.x,m_spt.y); //시작점부터

                dc.LineTo(point.x,point.y); //새로운점까지 그린다

                break;

        }

        m_oldpt=point;  //바로이전값 보관

        dc.SelectObject(pOldPen); //펜 반환


13. MessageBox

  AfxMessageBox()->전역함수를 이용하영 메세지 박스를 출력한다.   //어디서든지 사용할수 잇다

  int CWnd::MessageBox("메세지","창제목","아이콘|버튼(상수값)");   //View클래스에서 사용한다

  아이콘 상수값  MB_IC[안내]태그제한으로등록되지않습니다 - xxONERROR,  

                MB_ICONWARNING, MB_ICONQUESTION,MB_ICONINFOMATION

                MB_SYSTEMMODAL //시스템모달 대화창 닫기전에 다른작업 못함

                MB_APPLMODAL //응용모달

  버튼 상수값    MB_OK, MB_OKCANCEL, MB_YESNO


14. OS 컨트롤

  ExitWindowEx(EWX_SHUTDOWN,NULL); //Shut Down

  ExitWindowsEx(EWX_FORCE,0); //강제종료

  ExitWindowsEx(EWX_LOGOFF,0); //로그오프

  ExitWindowsEx(EWX_POWEROFF,0); //Shut Down -> Turn Off

  ExitWindowsEx(EWX_REBOOT); //Shut Down -> Reboot


15. DialogBox 메시지 교환

  UpdateData(FALSE); // 컨트롤에 멤버변수의 내용을 표시해준다

  UpdateData(TRUE);  // 컨트롤 내용을 다이얼로그 클래스의 멤버변수로 저장


16. 자료변환

  atoi,itoa - int <=> ASCII(char) 변환

  str.Format(" %d %d",x,y); // int형을 문자열로 변환

  atol,ltoa - ASCII <=> long 변환

  atof - ACSII => float 변환

  fcvt,gcvt  - 실수를 text로 변환

  LPtoDP, DPtoLP - 장치좌표 <=> 논리좌표 변환


17. CEdit Class 사용하기

  CEdit e_str.SetSel(int StartChae, int EndChar); //처음문자부터 마지막까지 블록 지정

  CEdit e_str.GetSel(int SChar,int EChar); //블럭 지정한 처음문자와 마지막문자 받기

  CString str=m_str.Mid(SChar,EChar-SChar); //블럭지정한 부분을 가져온다


18. 컨트롤과 자료교환

  SetDlgItemText(컨트롤 ID,문자열) //컨트롤에 문자열을 넣는다

  GetDlgItemText(컨트롤 ID,문자열) //컨트롤의 내용을 문자열에 넣는다

  GetDlgItem(컨트롤 ID); //컨트롤의 주소를 가져온다


19. 상태바조작

  CMainFrame 생성자 위에

  static UINT indicators[] = //이안에 새로운 ID를 넣고 그 ID의 갱신핸들러를 만든다음 코딩

  pCmdUI->SetText("표시할내용“);


20. 수동으로 Bitmap 컨트롤 사용하기

  CStatic bitmap; //bitmap 컨트롤변수

  bitmap.SetBitmap(CBitmap m_bitmap); //컨트롤에 비트맵지정

  GetDlgItem(IDC_BITMAP)->ShowWindow(SW_SHOW,HIDE);  // 그림을 보이거나 숨긴다.

  

21. 응용프로그램 실행하기

  WinExec("프로그램경로“,SW_SHOW,HIDE); //응용프로그램실행,경로는 \\로 구분한다


22. Bitmap 사용하기

  CBitmap bitmap.LoadBitmap(IDC_BITMAP); //비트맵객체에 비트맵지정

  CDC memDC; //그림그릴 메모리DC생성

  MemDC.CreateCompatibleDC(pDC); //화면 DC와 메모리 DC 호환 생성

  CBitmap *pOldBitmap=MemDC.SelectObject(&m_bitmap); //메모리에 그림을그린다.

  pDC->BitBlt(int x, int y,int Width, int Height, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop);

//BitBlt(그림x좌표,그림y좌표,그림넓이,그림높이,그림그려진메모리DC,그림시작x좌표,그림시작y좌표,스타일);

  pDC->StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop )

//StretchBlt(그림x좌표,그림y좌표,그림넓이,그림높이,그림그려진메모리DC,그림x좌표,그림y좌표,메모리그림넓이,메모리그림높이,스타일);

MemDC.SelectObject(pOldBitmap); // 메모리DC반환


23. Font 바꾸기

  CFontDialog dlg; //폰트다이얼로그 생성

  LOGFONT m_logFont; //폰트받을변수선언

  if(dlg.DoModal()==IDOK) //폰트다이얼로그표시

  {dlg.GetCurrentFont(&m_logFont)} //선택된 폰트받기

  OnDraw()

   CFont newFont,*pOldFont; //폰트 객체 만들기

   newFont.CreateFontIndirect(&m_logFont); //폰트 생성

   pOldFont=(CFont *)pDC->SelectObject(&newFont); //폰트 선택

   OnCreate()

   CClientDC dc(this); //DC 생성

   CFont *pFont=dc.GetCurrentFont();        //클라이언트 영역의 폰트를

   pFont->GetLogFont(&m_logFont); //로그폰트 멤버값으로 지정


24. Font 만들기

         LOGFONT logfont; //폰트를 만든다

        logfont.lfHeight=50;               //문자열 높이

        logfont.lfWidth=0;                 //너비

        logfont.lfEscapement=0;            //문자열기울기

        logfont.lfOrientation=0;             //문자개별각도

        logfont.lfWeight=FW_NORMAL;     //굵기

        logfont.lfItalic=TRUE;             //이탤릭

        logfont.lfUnderline=TRUE; //밑줄

        logfont.lfStrikeOut=FALSE; //취소선

        logfont.lfCharSet=HANGUL_CHARSET; //필수

        logfont.lfOutPrecision=OUT_DEFAULT_PRECIS;               

        logfont.lfClipPrecision=CLIP_DEFAULT_PRECIS;     //가변폭폰트 고정폭폰트

        logfont.lfPitchAndFamily=DEFAULT_PITCH|FF_SWISS; //글꼴이름

        strcpy(logfont.lfFaceName,"궁서체");

        CClientDC dc(this);

        CFont newFont; //폰트객체생성

        newFont.CreateFontIndirect(&logfont); //폰트지정

        CFont *pOldFont=dc.SelectObject(&newFont); //폰트선택

        dc.TextOut(100,100,m_text);

        dc.SelectObject(pOldFont); //폰트반환


25. Font 만들기 2

  CFont newFont;

  newFont.CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision, BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR lpszFacename );

 CFont *pOldFont=dc.SelectObject(&newFont);


26. ComboBox 사용하기

  CComboBox combo; //콤보박스 선언

  combo.Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

  //Style - WS_CHILD|WS_VISIBLE

  int n=combo.GetCurSel(); //선택된 아이템의 index를 가져온다

  combo.AddString("문자열“); //문자열을 추가한다

  combo.GetLBText(n,str); //n번째 아이템을 str에 저장


27. Spin 사용하기

  Spin은 바로앞의 Tab Order에 따라 붙는다

  m_spinr.SetRange(1900,3000); //스핀 범위 지정

  m_spinr.SetPos(m_nYear); //스핀 위치 지정


28. CTime사용하기

  CTime time; //시간객체생성

  time=CTime::GetCurrentTime(); //현재시간을 저장

  time.GetYear(),time.GetMonth();,time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond()


29. CListBox 메소드

  AddString("문자열");             //리스트에 문자열 추가

  DeleteString(index);             //리스트에서 항목 삭제

  GetCount()                     //전체 항목 갯수를 얻는다.

  GetSelcount()                   //선택된 항목 갯수 리턴

  GetSel()                //선택된 것인지 아닌지를 리턴한다 -> 양수 = TRUE , 음수 => FALSE

  GetText(int index,문자열변수)     //index 번째 문자열을 문자열 변수에 넣는다

  FindStringExact(문자열)    //지정 문자열의 index 값 리턴 -> 없으면 리턴값 LB_ERR 반환

  FindString("a")               //"a"로 시작하는 항목을 모두 찾는다.

  ResetCountent()            //모든 내용을 지운다.


30. 파일입출력

  프로젝트생성시 Step4 => Advanced => 저장파일확장자지정

  //이 클래스를 저장,로드가능한 클래스로 쓰겟다는 선언

  .h 파일에       DECLARE_SERIAL(CSawon)  

  .cpp 파일에     IMPLEMENT_SERIAL(CSawon,CObject,1) //이거를 해야 저장이 가능하다

  void CFileioDoc::Serialize(CArchive& ar)

        if (ar.IsStoring()) 

        {

            ar< <             //저장하기

        }

        else    //열기

        {

             ar>>m_shape; //불러올걸 쓴다. 읽을때도순서대로읽어야한다

        }



31. MicroSoft FlexGrid 사용하기!

  CMSFlexGrid m_Grid; //FlexGrid 컨트롤 변수

  CString strTitle[]={"고객코드","고객성명","고객포인트","신장","몸무게","고객등급","BMT지수","판정결과"}; // Grid 의 제목에 넣을문자배열

  int Width[]={900,900,1100,800,800,900,1000,900}; // Grid 의 열넓이 지정할 배열

  m_Grid.SetRows(m_cnt+2); //전체행수 지정

  m_Grid.SetCols(8); //전체열수 지정

  m_Grid.Clear(); //지우기

  m_Grid.SetFixedCols(0); //고정열은 없다.

  m_Grid.SetRow(0); // 행선택

  for(int i=0;i<=7;i++)

  {

     m_Grid.SetColWidth(i,Width[i]); //열 넓이 설정

     m_Grid.SetCol(i); //열 선택

     m_Grid.SetText(strTitle[i]); // 선택된행, 선택된열에 Text 를 넣는다

  }


32. 4대 Class간 참조

  //각각 헤더파일 include

  #include "MainFrm.h" //메인프레임 헤더파일

  #include "ClassDoc.h"   //Doc클래스 헤더파일

  #include "ClassView.h" //View를 include 할때는 반드시 Doc 헤더파일이 위에잇어야한다

  #include "Class.h" //APP Class 의 헤더파일


  void CClassView::OnMenuView() //뷰클래스

    CClassApp *pApp=(CClassApp *)AfxGetApp();   //View -> App
    CMainFrame *pMain=(CMainFrame *)AfxGetMainWnd();  //View -> MainFrm

    //View -> MainFrm -> Doc

    CClassDoc *pDoc=(CClassDoc *)pMain->GetActiveDocument();

    CClassDoc *pDoc=(CClassDoc *)GetDocument();         //View -> Doc


    //MainFrame 클래스

    CClassView *pView=(CClassView *)GetActiveView();  //MainFrm -> View

    CClassDoc *pDoc=(CClassDoc *)GetActiveDocument();  //MainFrm -> Doc

    CClassApp *pApp=(CClassApp *)AfxGetApp(); //MainFrm -> App


    //Doc 클래스

    CClassApp *pApp=(CClassApp *)AfxGetApp(); //Doc -> App

    CMainFrame *pMain=(CMainFrame *)AfxGetMainWnd(); //Doc -> MainFrm

    // Doc -> MainFrm -> View

    CClassView *pView=(CClassView *)pMain->GetActiveView();

    CClassView *pView=(CClassView *)m_viewList.GetHead();      // Doc -> View


    //App 클래스

    CMainFrame *pMain=(CMainFrame *)AfxGetMainWnd(); //App -> MainFrm

    //App -> MainFrm -> View

    CClassView *pView=(CClassView *)pMain->GetActiveView();

    //App -> MainFrm -> Doc

    CClassDoc *pDoc=(CClassDoc *)pMain->GetActiveDocument();


33. ToolBar 추가하기

  CMainFrame 으로 가서 멤버변수 추가

  CToolBar m_wndToolBar1;

  OnCreate 로 가서 다음 내용을 추가해준다

  (위의 toolbar 부분을 복사하고 이름만 바꾸면 된다.3군데..)

  if (!m_wndToolBar1.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |

         CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |

         CBRS_SIZE_DYNAMIC) || !m_wndToolBar1.LoadToolBar(IDR_TOOLBAR1))

        {

                TRACE0("Failed to create toolbar\n");

                return -1;      // fail to create

        }


  그 함수내에서 //TODO 아래에 내용추가..역시..복사해서 이름만 바꾸면 된다.

        m_wndToolBar1.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM);

        //DockControlBar(&m_wndToolBar1);   <= 이부분 대신..

        이거를 넣는다..

        CRect toolRect; //툴바 영역을 얻을 사각형

        this->RecalcLayout(); //현상태의 Client 영역을 구해서 저장한다

        m_wndToolBar.GetWindowRect(&toolRect); //툴바영역을 저장한다

        toolRect.left+=1; //사각형의 왼쪽을 1Pixel 줄인다

        //ToolRect에 툴바를 붙인다

        DockControlBar(&m_wndToolBar1,AFX_IDW_DOCKBAR_TOP,&toolRect);

        return 0;


34. ToolBar에 ComboBox붙이기

  CComboBox m_combo; //객체생성

  ID 등록 => view 메뉴 => resource symbol => new => ID_COMBO

  oncreate 에 내용 추가 (콤보를 만들고 표시하는 내용)

        m_wndToolBar.SetButtonInfo(10,IDC_COMBO,TBBS_SEPARATOR,150); 

        //툴바의 10번째버튼을 편집한다

        CRect itemRect; //콤보를넣을 사각형을 만든다

        m_wndToolBar.GetItemRect(10,&itemRect); //툴바의 10번째 버튼을 사각형에 넣는다
        itemRect.left+=5; //앞여백

        itemRect.right+=5; //뒤여백

        itemRect.bottom+=100; //콤보가열릴 공간확보

        m_combo.Create(WS_CHILD|WS_VISIBLE|CBS_DROPDOWN,itemRect,&m_wndToolBar,IDC_COMBO);

        //콤보박스를 툴바에 붙여준다

        m_combo.AddString("이름"); //내용추가

        m_combo.SetCurSel(0); //셀 선택


35.  Toolbar에 수동으로넣은 ComboBox 사용하기

  afx_msg void [안내]태그제한으로등록되지않습니다-xxOnSelectCombo(); //원형

  ON_CBN_SELCHANGE(IDC_COMBO,[안내]태그제한으로등록되지않습니다-xxOnSelectCombo) //메세지맵에 추가

  CMainFrame *pMain=(CMainFrame *)GetParent(); //메인프레임 주소참조

  CComboBox *pCom=(CComboBox *)(pMain->m_wndToolBar.GetDlgItem(IDC_COMBO));

  //콤보박스의 주소를 가져온다, 접근할 때 메인프레임 -> 툴바 -> 콤보박스 의 순서로 가야한다

  int n=pCom->GetCurSel(); //현재선택된 셀의 인덱스를 가져온다

  if(n==CB_ERR) return; //선택된셀이 없으면 중지한다

  CString str;

  pMain->m_combo.GetLBText(n,str); //선택된셀의 Text를 가져온다


36. UPDATE_COMMAND 사용하기

  pCmdUI->Enable(TRUE); //버튼 활성화

  pCmdUI->SetText((bAdd)?"취소":"신규"); //버튼의 text 설정

  pCmdUI->SetCheck(TRUE); //버튼 체크


37. 프로그램정보저장

  CWinApp::GetProfileString(섹션명,항목명,기본값); // 함수를 사용한다. (문자열)

  CWinApp::GetProfileInt(섹션명,항목명,기본값); //불러올때사용 (숫자) 

  CWinApp::WriteProfileString(섹션명,항목명,값); //저장할때 사용 (문자열)

  CWinApp::WriteProfileInt(섹션명,항목명,값); //저장할때 사용 (숫자)

  //불러올때 사용할함수

  void CMainFrame::ActivateFrame(int nCmdShow) //프로그램 실행후 프레임생성될때 실행

  //저장할 때 WM_DESTROY 메시지 사용


38. 컨트롤바 표시하기

  CMainFrame *pMain=(CMainFrame *)GetParent(); //MainFrame 주소가져오기

  //툴바를 bTool2 에따라 보이고 감춘다

  pMain->ShowControlBar(&pMain->m_wndToolBar,bTool1,FALSE);


39. Window 창크기,위치정보 저장하기

  MainFrame 의 WM_DESTROY 에

    WINDOWPLACEMENT w;

    this->GetWindowPlacement(&w); //윈도우의 정보를 저장한다.

    CString strRect;

    strRect.Format("%04d,%04d,%04d,%04d", //04d 는 4자리 확보하고 남은건 0으로 채워라

         w.rcNormalPosition.left,w.rcNormalPosition.top,

         w.rcNormalPosition.right,w.rcNormalPosition.bottom); //윈도우의 위치,크기 확보..

        

        BOOL bMax,bMin; //윈도우의 상태를 저장하기위한 변수

        //w.falg 는 이전상태의 정보를 가지고 잇다!!

        if(w.showCmd==SW_SHOWMINIMIZED)           //최소화 상태

        {

                bMin=TRUE;

                if(w.flags==0) //falg 값이 0 이면 이전 상태가 보통상태이다!!

                        bMax=FALSE;

                else   //이전상태가 최대화 상태

                        bMax=TRUE;

        }

        else                            

        {

                if(w.showCmd==SW_SHOWMAXIMIZED) //최대화상태

                {

                        bMax=TRUE;

                        bMin=FALSE;

                }

                else //보통 상태

                {

                        bMax=FALSE;

                        bMin=FALSE;

                }

        }

        AfxGetApp()->WriteProfileString("WinStatus","Rect",strRect);

        AfxGetApp()->WriteProfileInt("WinStatus","Max",bMax);

        AfxGetApp()->WriteProfileInt("WinStatus","Min",bMin);



//읽어올차례..

ActivateFrame 함수로 가서

        WINDOWPLACEMENT w;  //윈도우의 상태를 저장하는 구조체..

        BOOL bMax,bMin;               //최대,최소상태를 저장할 변수

        CString strRect; //창크기를 받아올 변수

        strRect=AfxGetApp()->GetProfileString("WinStatus","Rect","0000,0000,0500,0700");

        bMin=AfxGetApp()->GetProfileInt("WinStatus","Min",FALSE);

        bMax=AfxGetApp()->GetProfileInt("WinStatus","Max",FALSE);

        int a=atoi(strRect.Left(4)); //문자열을 int 로 바꿔준다.

        int b=atoi(strRect.Mid(5,4));     //atoi 아스키 값을 int형으로 바꿔준다..

        int c=atoi(strRect.Mid(10,4));

        int d=atoi(strRect.Mid(15,4));

        w.rcNormalPosition=CRect(a,b,c,d);

        if(bMin)

        {

                w.showCmd=SW_SHOWMINIMIZED;

                if(bMax)

                {

                        w.flags=WPF_RESTORETOMAXIMIZED  ;

                }

                else

                {

                        w.flags=0;

                }

        }

        else

        {

                if(bMax)

                {

                        w.showCmd=SW_SHOWMAXIMIZED;

                }

                else

                {

                        w.showCmd=SW_SHOWNORMAL;

                }

        }

        this->SetWindowPlacement(&w); //설정된 값으로 윈도우를 그리게 한다..

        

        //CFrameWnd::ActivateFrame(nCmdShow); //이건 반드시 주석처리한다..


40. progress Bar 쓰기

  m_progress.SetRange(m_first,m_last); //Progress 범위설정하기

  m_progress.SetStep(m_step); //Progress Step설정하기

  //m_progress.StepIt(); //스텝만큼 움직이기

  //또는 다음을 사용한다

  for(int a=m_first;a<=m_last;a+=m_step) //a가 처음부터 끝까지

  {

    m_progress.SetPos(a); // 위치를 a에 맞춘다

    Sleep(50); //천천히 움직이게한다

  }


41. 파일대화상자 FileDialog 사용하기

  void CConDlg1::OnFileopen()  //파일열기 버튼

  {

        CFileDialog *fdlg; //파일대화상자 객체 생성 // 포인터로 만든다..

        static char BASED_CODE szFilter[] = "Animate Video Files (*.avi)|*.avi|All Files

                                                                (*.*)|*.*||";

        //필터를 만들어 준다..이건 할줄 모름..

        fdlg =new CFileDialog(TRUE, ".avi", NULL, OFN_HIDEREADONLY |

                                               OFN_OVERWRITEPROMPT,szFilter);

        //대화상자 만들기..이렇게 해야댄다..

        if(fdlg->DoModal()==IDOK) //이제..대화상자를 띠우고..    

        {                               //OK 누르면 실행될 부분..

                m_filename=fdlg->GetPathName();        //대화상자에서 경로를 받아서 저장.

                UpdateData(FALSE);    

        }

  }

  //파일 다이얼로그 만들기

  CFileDialog fdlg(TRUE,"avi",".avi",OFN_OEVRWRITEPROMPT,"Vidoe Files(*.avi)

                                 |*.avi|All Files(*.*)|*.*||");


42. Animate Control 사용하기

  m_animate.Open(m_filename); //파일을 연다

  m_animate.Play(0,-1,1);  //(처음프레임,마지막프레임,반복횟수)

  m_animate.Stop(); //정지시키기

  m_ani.SetAutoStart(TRUE); //자동으로 시작한다


43. Control 의 Style 바꿔주기

  Control.ModyfyStyle(제거할스타일,추가할스타일); //스타일은 MSDN내용 참조


44. 시스템 날자바꾸기 버튼

  SetSystemTime(),GetSystemTime() //GMT 표준시를 가져온다.

  GetLocalTime(),SetLocalTime()  //현재 지역시간을 가져온다.


        SYSTEMTIME st;

        GetLocalTime(&st); //현재 시간, 날자를 넣는다.

        st.wYear=m_date2.GetYear();

        st.wMonth=m_date2.GetMonth();

        st.wDay=m_date2.GetDay();

        SetSystemTime(&st);


45. 시스템 시간 바꾸기 버튼

        UpdateData(TRUE);

        SYSTEMTIME st;

        GetLocalTime(&st);

        st.wHour=m_time.GetHour();

        st.wMinute=m_time.GetMinute();

        st.wSecond=m_time.GetSecond();

        SetLocalTime(&st);


46.시스템의 드라이브 문자 얻기

        char temp[50];

        GetLogicalDriveStrings(sizeof(temp),temp);

        CString str,str1;

        int n=0;

        while(*(temp+n)!=NULL)

        {

                str=temp+n;

                str1+= " "+str.Left(2);

                n+=4;

        }


47. 현재 작업경로 얻기

  char temp[MAX_PATH]; //MAX_PATH 는 경로길이의 최대를 define 해놓은것.

  GetCurrentDirectory(sizeof(temp),temp);  // 현작업하는 경로(경로 길이,문자형);


48. Tree Control 사용하기

  HTREEITEM hmov,hmus; //핸들을받을 변수 이게 잇어야 하위 디렉토리 생성가능

  hmov=m_tree.InsertItem("영화",TVI_ROOT,TVI_LAST); //,TVI_ROOT,TVI_LAST는 default

  hm1=m_tree.InsertItem("외화",hmov);  //hmov 아래 “외화”트리 생성

  CImageList m_image; //그림을 사용하기 위한 클래스다!! 알아두자..

  m_tree.SetImageList(&m_image,TVSIL_NORMAL); //Tree View Style Image List => TVSIL

  hmov=m_tree.InsertItem("영화",0,1,TVI_ROOT,TVI_LAST);//TVI_ROOT,TVI_LAST는 default

  hmus=m_tree.InsertItem("가요",1,2); //("문자열",처음그림번호,선택시그림)

  hm1=m_tree.InsertItem("외화",2,3,hmov); //그림 번호는 default 로 0이 들어간다..


49. List Control 사용하기

  m_list.ModifyStyle(LVS_TYPEMASK, LVS_ICON); //리스트를 큰아이콘형태로 보인다

  m_list.ModifyStyle(LVS_TYPEMASK, LVS_SMALLICON);//리스트를 작은아이콘형태

  m_list.ModifyStyle(LVS_TYPEMASK, LVS_LIST); //리스트를 리스트형태로 보인다

  m_list.ModifyStyle(LVS_TYPEMASK, LVS_REPORT); //리스트를 자세히형태로 보인다


  CImageList m_treeimage; //이미지리스트

  CImageList m_small, m_large;

  m_large.Create(IDB_LARGE,32,0,RGB(255,255,255)); //이거는 클래스에서 추가해준거다

  m_small.Create(IDB_SMALL,16,0,RGB(255,255,255));// (bmp ID값,

  m_list.SetImageList(&m_large,LVSIL_NORMAL);

  m_list.SetImageList(&m_small,LVSIL_SMALL);

  CString name[]={"홍길동","진달래","한국남","개나리"};

  CString tel[]={"400-3759","304-7714","505-9058","700-9898"};

  CString born[]={"1980-1-1","1981-12-20","1980-05-15","1981-08-31"};

  CString sex[]={"남자","여자","남자","여자"};

       

  m_list.InsertColumn(0,"이름",LVCFMT_LEFT,70);

  m_list.InsertColumn(1,"전화번호",LVCFMT_LEFT,80);

  m_list.InsertColumn(2,"생일",LVCFMT_LEFT,90);

  m_list.InsertColumn(3,"성별",LVCFMT_LEFT,50);

        LVITEM it; //리스트 구조체

        char temp[100];

        for(int a=0;a<4;a++)

        {       

                int n=(sex[a]=="남자")?0:1;

                m_list.InsertItem(a,name[a],n); //insert item 은 행을 만들고..

                it.mask=LVIF_TEXT|LVIF_IMAGE; //마스크 설정

                it.iItem=a;

                it.iSubItem=1; //열 설정

                strcpy(temp,tel[a]); //이거 모하는거냐..

                it.pszText=temp;

                m_list.SetItem(&it);                     // setitem 열에 정보를 넣는다.


                it.iSubItem=2; //열 설정

                strcpy(temp,born[a]); //이거 모하는거냐..

                it.pszText=temp;

                m_list.SetItem(&it);                      // setitem 열에 정보를 넣는다.


                it.iSubItem=3; //열 설정

                strcpy(temp,sex[a]); //이거 모하는거냐..

                it.pszText=temp;

                m_list.SetItem(&it);                      // setitem 열에 정보를 넣는다.


50. Bitmap Button 사용하기

  CBitmapButton 을 사용한다! CButton 에서 상속 받는클래스임..

  m_button1.Create(NULL, WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,

                                 CRect(310,20,370,50), this,IDC_MYBUTTON); //버튼만들기

  m_button1.LoadBitmapsIDB_UP,IDB_DOWN,IDB_FOCUS,IDB_DISABLE);//버튼의 그림설정

  m_button1.SizeToContent(); //버튼을 그림 크기로 맞춰 준다!!


 //그냥 버튼을 비트맵버튼으로 바꾸기 -> 버튼을 만든다 속성에서 OWNERDRA 속성에 체크!!

  m_button2.LoadBitmaps(IDB_UP,IDB_DOWN,IDB_FOCUS,IDB_DISABLE); //버튼 그림설정

  m_button2.SizeToContent(); //버튼을 그림 크기로 맞춰 준다!!


51. 중복없는 난수발생하기

        int su; //발생된 난수저장

        int a,b;

        BOOL bDasi; //숫자가중복될경우 다시하기위한 변수

        for(a=0;a<9;a++)  //난수 9개 발생

        {

                bDasi=TRUE;

                while(bDasi)

                {

                        bDasi=FALSE;

                        su=rand()%10; //난수발생

                        for(b=0;b

                        {

                                if(temp[b]==su)  //중복이면

                                {

                                        bDasi=TRUE; //중복이 잇으면 다시while 문을 실행한다

                                        break;

                                }//if

                        }//for

                }//while

                temp[a]=su; //중복이 아니면 대입한다


52. 메뉴 범위로 사용하기

  ON_COMMAND_RANGE(ID_LEVEL3,ID_LEVEL9,OnLevel); //범위메세지 발생

  //메뉴 ID의 값이 연속된 숫자일 경우 범위로 지정해서 사용할수잇다


53. 한,영 전환함수

  void CCustView::SetHangul(BOOL bCheck) //T:한글 F:영문 이건 외우자..

  {

      //뷰클래스의 윈도우 핸들포인터를 얻는다.

      HIMC hm=ImmGetContext(this->GetSafeHwnd());

      if(bCheck)

      {

          ::ImmSetConversionStatus(hm,1,0); //1은 한글 0은 영문

      }

      else

      {

          ::ImmSetConversionStatus(hm,0,0); //영문으로 바꿔준다

      }

      ::ImmReleaseContext(this->GetSafeHwnd(),hm); //장치를 풀어준다

  }

  #include "imm.h" //헤더 반드시 추가하고

  imm32.lib (라이브러리 파일)를 반드시 링크해주어야 한다!

  **** 라이브러리 추가하기

  프로젝트메뉴 -> 셋팅 -> 링크탭


54. DLL함수정의하기

  임포트함수 :  extern "C"  __declspec(dllimport)   리터형  함수명(매개변수,...) ;

  - 메인프로그램에서 DLL에 있는 함수를 호출할때 사용한다.


  엑스포트함수 :  extern "C"  __declspec(dllexport)   리터형  함수명(매개변수,...)

                      {

                             내용;

                      }

Posted by 모과이IT
,

OnEraseBkgnd 함수는 보통 배경화면을 비트맵을 사용하여 그리기 위해 사용한다. 배경화면을 비트맵으로 처리하면 윈도우가 새로 그려져야 할 경우 화면이 깜박이고, 컨트롤들이 비트맵에 가려서 보이지 않게 된다. 윈도우가 다른 윈도우에 가려졌다가 다시 앞으로 나올 경우 그 윈도우는 다시 그려지게 된다. 윈도우가 배경을 그리는 방법은 모든 화면을 깨끗이 지우고(흰색 브러쉬로 채운다), 그 위에 배경을 그리게 된다. 한마디로 배경을 다시 그리기 위해 두 개의 작업이 이루어 진다. (윈도우가 배경을 다시 그려야 할 때 WM_ERASEBKGND 메세지를 호출한다.)

 

OnEraseBkgnd() 기본형 함수

  1. bool OnEraseBkgnd(CDC *pDC) {

    reutrn CDialog::OnEraseBkgnd(pDC); // Dialog에서 작업

  2. } // 흰 부러쉬로 배경을 다시 그린다.

 

윈도우에서 GDI(Graphic Device Interface)를 사용하여 그림을 그려야 할 경우, 화면에 DC(Device Context)에 바로 출력하지 않고, 메모리 DC에 먼저 그림을 로드한 후에 메모리 DC의 내용을 화면 DC에 빠르게 출력하여 깜박임 현상을 최소하 한다. 이러한 것을 Double Buffering이라고 한다.

 

DC(Device Context)의 종류

  1. CClientDC   클라이언트 영역의 출력
  2. CPaintDC   WM_PAINT 메시지 헨들러를 사용
  3. CWindowDC   전체 윈도우에 대한 출력(Screen Saver ...)
  4. CMetaFileDC   메타 파일로의 출력

 

배경화면 그리기(Exampe-1)

  1. VOID CTest::Initialize(VOID) {
  2. CBitmap m_BackBitmap;
  3. m_BackBitmap.LoadBitmap(IDB_BACKGROUND);   //메모리 DC에 사용할 Background Bitmap
  4. }
  5. BOOL CTest::OnEraseBkgnd(CDC* pDC) {
  6.  CDC  memDC;                     // 메모리 DC
     CBitmap * pOldBitmap = NULL;    // m_BackBitmap으로 새로운 그림을 DC에 그릴 때, 이전 그려졌던 DC(즉, Bitmap)을 저장.
  7.  BITMAP bitmapInfo;              // 그림의 정보(m_BackBitmap)
  8.  m_BackBitmap.GetBitmap(&bitmapInfo); // Bitmap 크기 구함.
  9.  memDC.CreateCompatibleDC(pDC);  // 메모리 DC 생성
  10.  pOldBitmap = memDC.SelectObject(&m_BackBitmap);
  11.  pDC->BitBlt(0, 0, bitmapInfo.Width, bitmapInfo.Height, &memDC, 0, 0, SRCCOPY);   // 메모리 DC에 그림을 그림
     
     memDC.SelectObject(pOldBitmap);
  12.  memDC.DeleteDC();
  13.  //return CDialog::OnEraseBkgnd(pDC);
     return true; // 흰 부러쉬가 아닌 배경을 그려야 하기 때문에 true
  14. }

 

 위의 소스에서 이해하기 난해한 부분은 memDC.SelectObject(CBitmap* bitmap) 함수이다. CBitmap * pOldBitmap 을 선언한 이유는 pOldBitmap = memDC.SelectObject(&m_BackBitmap); 구문 때문이다.

윈도우는 항상 거의 대부분 사용을 다한 자원은 반환되어야 한다. memDC.SelectObject(&m_BackBitmap); 을 사용하여 새로운 비트맵을 넣으면, 이전 작업 중이던 비트맵을 리턴한다. 14줄 memDC.SelectObject(pOldBitmap); 에서는 이전에 저장했던 pOldBitmap을 다시 넣는다. m_BackBitmap 그림을 다 그렸기 때문에 더이상 사용할 필요가 없기 때문에 이전 pOldBitmap을 다시 DC에 돌려 주게 된다. 그리고 배경을 다 그렸기 때문에 두 번째 나오는 SelectObject에서는 리턴값을 받을 필요가 없다. (OnEraseBkgnd 함수는 배경이 다시 그려져야 할 경우에만 WM_ERASEBKGND 메시지를 호출하여 다시 그리게 된다.)

 

GetClip를 사용하여 속도 향상 시키기(Exampe-2)

  1. VOID CTest::Initialize(VOID) {
  2. CBitmap m_BackBitmap;
  3. m_BackBitmap.LoadBitmap(IDB_BACKGROUND);  
  4. }
  5. BOOL CTest::OnEraseBkgnd(CDC* pDC) {
  6.  CDC  memDC;
     CBitmap * pOldBitmap = NULL;
     BITMAP bmpInfo;
  7.  //HBITMAP m_hBmp = (HBITMAP)LoadImage(NULL, _T("bg.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
     //CBitmap *pBmp = CBitmap::FromHandle(m_hBmp);

  8.  m_BackBitmap.GetBitmap(&bmpInfo);
     memDC.CreateCompatibleDC(pDC);
  9.  pOldBitmap = memDC.SelectObject(&m_BackBitmap);
     memDC.SelectObject(&m_BackBitmap);
     
     CRect rect;
     GetClientRect(&rect);
  10.  int nX, nY;
     for(nX = 0; nX < rect.Width(); nX += bmpInfo.bmWidth) {
  11.      for(nY = 0; nY < rect.Height(); nY += bmpInfo.bmHeight) {
               pDC->GetClipBox(&rect);
  12.   pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &memDC, 0, 0, SRCCOPY);
  13.   }
  14.  }
  15.  memDC.SelectObject(pOldBitmap);
     memDC.DeleteDC();
  16.  return true;
  17. }

 

 

Double Buffering

매모리맵에 클라이언트 창의 크기만큼 비트맵 이미지를 그려 놓고 한꺼번에 화먼에 뿌려주는 방식(실행시 더 빠른 속도) (Exampe-3)

  1. BOOL CLoaderDlg::OnEraseBkgnd(CDC* pDC) {
  2.  CDC  MemDC, BufferDC;
     CBitmap * pOldBitmap1 = NULL;
     CBitmap * pOldBitmap2 = NULL;
     CBitmap memBitmap;
     BITMAP bmpInfo;
     CRect rect;
  3. GetClientRect(&rect);
     MemDC.CreateCompatibleDC(pDC);
     BufferDC.CreateCompatibleDC(pDC);
  4.  memBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
  5.  pOldBitmap1 = MemDC.SelectObject(&memBitmap);
  6.  m_BackBitmap.GetBitmap(&bmpInfo);

  7.  pOldBitmap2 = BufferDC.SelectObject(&m_BackBitmap);
     for(int nX = 0; nX < rect.Width(); nX += bmpInfo.bmWidth) {
         for(int nY = 0; nY < rect.Height(); nY += bmpInfo.bmHeight) {
             MemDC.BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &BufferDC, 0, 0, SRCCOPY);
         }
     }

  8.  pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);
  9.  BufferDC.SelectObject(pOldBitmap2);
     MemDC.SelectObject(pOldBitmap1);
  10.  return true; 
    }
Posted by 모과이IT
,

IDispatch* FindElement( REFIID riid, IDispatch* pDispBrowser )
{
 HRESULT hr;
 IHTMLDocument2* pHTMLDocument2;

 hr= pDispBrowser->QueryInterface( IID_IHTMLDocument2, (void**)&pHTMLDocument2 );
 if (hr != S_OK) return 0;

 IHTMLElementCollection* pColl;
 hr= pHTMLDocument2->get_all( &pColl );
 if (hr != S_OK) return 0;

 LONG celem;
 hr = pColl->get_length( &celem );
 if (hr != S_OK) return 0;

 for ( int i=0; i< celem; i++ ) {
  COleVariant varIndex( (long)i );
  COleVariant var2;
  IDispatch* pDisp;

  hr = pColl->item( varIndex, var2, &pDisp );
  if ( hr != S_OK ) {
   return 0;
  }
  IHTMLElement* pElem;
  //---------- see if this one is of the requested type...
  hr = pDisp->QueryInterface( riid, (void **)&pElem );
  if ( hr == S_OK ) {   // YES!
   pDisp->Release();
   return( pElem );
  }
  pDisp->Release();
 }
 return(0);
}


==========================================
실제로쓰기

CWebBrowser2* pBrowser= (CWebBrowser2*)GetDlgItem( IDC_PREVIEW_IKEA );


  IHTMLFrameBase* pFrameSetElem= (IHTMLFrameBase*)FindElement(
   IID_IHTMLFrameBase, pBrowser->GetDocument()
   );

Posted by 모과이IT
,

이 소스로 모든 ie의 인터페이스를 컨트롤 할수있다. (조금만 응용하면)

Posted by 모과이IT
,
트루 칼라를 사용하는 방법을 알고 싶거든요...???
pop3서버와 관련된 질문입니다.
컴터를 산지 5개월정도밖에 되지 않았는데....느려지고...
다이얼로그 박스기반의 윈도우에 메뉴를 띄우려면???
DAO에서 두개의 테이블 조인???
모달리스 다이얼로그와 작업표시줄...
뷰윈도우에서 차일드 윈도우 만들기..
OCX를 만드는데
현재 어플리케이션에 HWND얻어오는 방법
16bit 비트맵 파일의 헤더정보에 대해...
vb에서 만든 dll을 vc에서 쓰는법좀 가르쳐줘요...
메세지 훅킹에 의한 상하 좌우 키보드 조작법을 알고 싶습니다.
edit control에서 입력되는 FontSize를 줄이는 방법?
현재 프린트 스풀러에 대기중인 모든 작업에 대한 정보를 얻는 방법
비주얼씨에는 비주얼베이직의 DoEvents같은게 없나요??
ASX에 있는 ASF 파일을 다운로드 받을 수 있는 방법은?
Visual C++ 를 처음 시작하려 합니다. 도움이되는 사이트좀
실행프로그램을 항상 최상위 화면에 띄울려면..
숫자를 String으로 바꾸는 방법은?
DialogBar에 클래스를 만들었는데, 메인프레임에서도 핸들러 함수를
vfw 함수중 hwnd 의 핸들은 어떻게...
슬라이더 컨트롤 사용법 중에서... ( CSliderCtrl )
2개의 txt파일을 읽어 비교하고 새 txt파일에 다시 저장하기
[ActiveX]Visual C++가 설치 되지 않은PC에서 사용방법
mdi에서 활성화된 뷰 포인터 얻어오는게 잘 이해가..
화면출력할때 출력변수와 도큐먼트변수의 차이점이 뭔지요...
불안한데..
ACM을 이용한 음성 압축 방법에 대해
c파일을 c++로 전환하기..
waveform..
다이얼로그의 크기 조절은 어떻게..
avi 를 asf로 변환하는 방법?
여러종류의 MDI ChildFrame을 갖고싶은데....
다이얼 로그 화면에 있는 그림 제어하기
리스트 컨트롤에서....
VC에서의 에러 메시지
유니코드 정의는 어떻게...
분할윈도우에서 툴바의 활성화 상태를 체크 하는법
메일체커 프로그램을 만들고 싶습니다...
GetDescendantWindow()가 뭐하는 거죠?
activex에서 다른 프로젝트에 있는dialog form을 불러들이려면
컨트롤에 대한 질문
M/HTML 즉 HTML 기반 E-MAIL 프로그램을 만들고 싶습니다.
컨트롤을 제거하려면?
다이얼로그를 다른데서 붙여 넣기하니까 "빈문서 작성 실패" 메세지가 나와
압축된 *.bmp 을 풀어주세요
Dialog 스크롤
DAO로 작성한 프로그램 배포
CTreeControl의 특정아이템 폰트색바꾸기
VARIANT 사용법에 대하여...
[코덱]에 대해서...
컨트롤..
다이얼로그 박스에 선그리기
CFileDialog 에서...
디버그
static text 컨트롤에 그래프를 나타내려면..
CWinThread클래스를 얻으려고 합니다.
MDIGetActive()와 GetActiveFrame()의 차이는 뭐죠
다이얼로그 박스에 비디오로 찍은 화상을 원하는 위치에 디스플레이하려면??
mdi에서 활성회된 모든 뷰 없애기
홈페이지에서 링크를 눌러 pc의 프로그램을 실행시키는 방법
activex에서 버튼..을 만들려면
[질문]슈팅겜 유도탄 알고리즘은 어떻게 구현하나용 ^^;
이미지를 Formview 에 깔기..
컨트롤 리스트에 저장된 파일을 불러올수는....
비트맵을 이용한 하이퍼링크
DLL 함수에서 일반 application 내부 함수를 호출하려면?
변수들의 메모리해제 문제거든요?
조건문에서 like문 사용에 관해서...???
아주간단한 질문.진짜 쉬운거요...
다이얼로그 박스를 일정시간 지나면 사라지게 하려고요...??
시리얼 통신에서 0x13과 0x11이 안들어옵니다
여드름 없애려먼 어떻게 해야하나요?확실한 답변 부탁드려요..;
CArray 템플릿 사용에서 에러가 나는군요.
[급]ODBC 또는 ADO로 원격 Database접속 방법
영진출판사 bible 의 automation 예제 따라하다 가 이상한 메
E-Mail Client 를 짜려합니다. 로컬 vs 서버의 처리 부분이?
OpenGL에서 2D로 원을 그리는 함수가 뭐죠?
CreateSemaphore() 의 인자설명에 대해서
세마포어에서왜 for 문을 돌때마다 ReleaseSemaphore해주는지
html help workshop 는 어디에?
비쥬얼 C++ 에서비트맵 여는 소스
여러 함수에서 특정 클래스를 접근하려고 할때...
Formview 에서 글자 변경
[질문]소켓프로그래밍에서..서버쪽의 Accept에 대하여..
ListCtrl에서 몇번째item을 선택했는지 어떻게 알죠?
함수를 Parameter로 사용하고 싶은데요..
이 함수좀 알려 주세요....T.T
원자를 무한하게 쪼개면 어떻게 되나?
이미지의 윤곽만을 나타내고 싶습니다.
포인터 관련 질문
thread를 통한 다이얼로그 생성
RichEditView에서 이미지 추가시 추가 파일의 경로 아는법??
Printer 제어
버튼을 누르면 해당곳에 list가 나오도록
자신의 IP 주소를 아는 방법
파일에서 문자열 읽어오기
Win 32 Internet API (WinInet)에 대하여...
Makefile에 대한 궁금한점
OnInitialUpdate()호출하는 방법이 어떻게 되죠?
[질문] 다이얼로그에서 뷰로 SendMessage...
iehelper object에 대해서..
에러원인좀 ....
방화벽에 관해서
[질문] 이쁜 윈도우프레임과 버튼 만들어 붙이는 방법.....
파일 입출력에서 날짜가 있는 부분만 추출하고 싶습니다.
인스턴스를 종료시키는 방법
파일 삽입
자동으로 파일 카운트되어 파일 생성
프로그램 내에서 액셀 파일 생성 방법..
컴퓨터의 행동 기록하기-- 일종의 스크립트?
간단한 질문 하나 ~
용어 설명좀 부탁드립니다.
CStatic 클래스 다루기....
윈도우를 수동으로 만드는 예제
왜 여자는 가슴이 커지는 걸까요,
MFC 용 DLL 을 여러개 삽입해서 사용하는 방법이 궁금합니다.
capGetDriverDescription..
리스트 컨트롤 큰아이콘으로 보기에서 아이콘의 간격 조절하기..
리스트박스에서 멀티셀렉트 아이템 얻기
static에 그림 그릴때 이런경우는.....?
local function definitions are illegal?
PropertySheet에서의 창크기 조절...
텍스트 화일을 읽고 이진화일로 저장하기
c++관련한 oop?
파일 Size를 바꿀수 있나요...
VC++로 메일 보내기
CBitmap 형태의 비트맵을 DIB 로 변환하는 방법?
mdb파일에서 필드 속성을 날짜 시간으로 했는데, 그것을 ado를 써
에디트 박스에서....
변수선언에서 에라가 ..
폰트를 이용해서 글자의 색을 바꿀수가 있나요?
TV카드를 사용해서 VFW함수를 이용해 다이얼로그 박스에 화면 출력까진
빠르게 폴더 겟수 얻기
성에 무지한 관계로 이것저것 골머리 썩고 있는 학생입니다만 읽어보기라도
CFtpConnection::GetCurrentDirectory() 사용
아주 간단한 질문
http 를 사용해 post 방식으로 데이타나 파일을 보낼려고 하는데,
include
익스플로러의 경로알아내기
클래스와 클래스에서 데이터 교환
툴바의 위치 복원 문제
웹서버에 내용을 읽어 오는 mfc함수
CProperty sheet 의 생성은 어디에서 하나요?
[진짜진짜급한질문] 다이얼로그 박스를 SDI형식으로 만들기...
DLL작성시 LNK2005에러...
타이머를 2개 사용하여 각각 다른 행동을 하려 합니다
AfxMessageBox 를 자동으로 닫는다?
게임 프로그래머가 되기 위해서는?
포토샵의 layer처럼....
ie 의 인터넷 옵션값 읽어오기(레지스트리 뒤져서)
카운터 2개의 이용시 값이 같이 카운팅
MFC 오랜 경험자 우대 ~!
[질문] FTP에서 폴더 전체를 업다운로드시키는 방법...
파일 입출력???
클래스에 관한 질문입니다.
timer..
html preview는 어떻게...?
<질문>read only 컴파일에 대해서..
콤보박스의 사용법에 대한 질문
새로운 클래스에 이벤트를 넣고 싶어요..
RegQueryValueEx() 함수를 사용해 인터넷 옵션값을 읽어오는데
프로젝트 설계시 역할분담?
긴 문자열에서 원하는 문자열 짤라오기
다이얼로그 박스를 외부 프로그램에서 메세지 보내기.
한글에서와 같은 눈금 표시는 어떻게 하나요???
네트워크 프로그래밍에 대한 조언 부탁해요.
링크에라..?
capCreateCaptureWindow..?
[질문]메뉴와 툴바등을 DLL로 만들어서 프로그램에 적용시키기.
SendMessage에 대해서 해결 좀....
시계 사용법..
ListControl 에 검색에 관하여
MDI 에서 child frame을 화면중앙에 위치시키려면
초급이지만 급한 것!!! 다얄록 베이스에서 마우스 바꾸기~
turboC 에서 프로그램의 실행결과를 보려면
CLIstCtrl 에서 검색하기..
Dialog base에서 툴팁
프로그램실행에 대해??
쓰레드 종료시 생기는 메모리 릭에 대해서..
VC에서 .C 파일을 C++로 컴파일하도록 지시하는 법
질문]SendMessage에서...
CPropertySheet 폰트변경
H 로 시작하는 데이타 타입..
다이얼로그기반에서 (비)활성화는 어떻게...
[질문] MFC확장 DLL 실행.
LDAP로 oracle연동...
winsock2 programming?
C++에서..
c++의 새로운 형변환에 대해
MFC에서 캠자원 쓰는 프로그램을 하고싶은데.. 가이드할만한 자료좀 부탁
WM_ERASEBKGND
[질문] 익스플로러를 보면 앞으로 뒤로가 있고...
CFileDialog에서 선택한 파일을 열려면...
좌표계를 바꿀려면...?
여러개의 다이얼로그를 사용하는 프로그램
employee* employee::list = 0;의 의미는???
무슨 뜻의 에러인지 알려주세요
ocx등록?
하노이 타워 & 재귀함수...
윈플밍 초보자로서 질문 !
패기지,배포..
IE의 SaveAs ?
zip module
scanf함수에서..
32x32이상의 아이콘
DB를 리스트 컨트롤로 나타내려면...
냉장고 청소할때 에탄올을 어떻게 사용해야하나요???
곤충들은 왜 징그러울까요?
ODBC 나 DAO 화일처리시......
런타임오류에 대해
Media Player OCX Source를 구합니다
SendMessage, PostMessage, Message 핸들러..
콘돔을사용하면 정말 안심일까?
최대화 버튼을 내가 만든 비트맵으로 바꿔칠수 았나요?
double 형 변수를 출력하려고 하는데 문제가...
스트링 리소스..
PtInRect() 함수에서 마이너스 좌표 계산에서 뭔가 이상해요
DLL작성중 String Table의 ID로String처리를 하고자할경우
ftp에서 진짜 진짜 궁금하고 빠른답변을원하는질문....
[질문] 파일을 바이너리로 저장하는 방법
[질문] activeX 만들때 Size 조절을 못하게 하려고 합니다
텍스트 박스 동적으로 En/Disable 시키기
마우스 커서를 바꾸려고 하는데..
slider control를 비트멥(bitmap)이미지를 이용?
ftp에서 다운로드받을때 진행사항을나타내는 박스를 만드는법...
탐색기에서 오른쪽 마우스 눌렀을때
특정버퍼의 프린터 출력..
외부 html화일 실행시키기..
스플래쉬 윈도우 띄우는 방법
text_control 의 폰트크기변경
다른 윈도우의 컨트롤을 제어하는법...
프로그램 실행화일이 위치한 절대 경로 받기..
class들의 비교가 가능한가요??
마우스포인터가 위치한 곳의 문자열 가져오기(훅킹관련)
다이얼로그 base중에...
어들레스에 관한 질문
에러 해결
스태틱 콘트롤의 BN_CLICKED이벤트
키보드의 키를 동시에 2, 3, 4개를 눌렀을 경우 처리
다이얼로그를 항상 화면의 맨 위에 띄우게 하려면
모달리스 박스에서 저절로 닫힙니다.(에딧박스에서 엔터시)
로그온하는 dialog 이외의 부분을 누르면 띵 소리나며 반드시 로그온이
디이얼로그기반에 db연결할려면
WIN32 기반으로 EditBox를 구현하고 싶은데요.
5.0프로그램 열기?
에디트박스에 커서 위치시키기
스페이스 문자의 넓이조정...
일반뷰에서 데이터베이스 출력
변수 에라?
DC를 이용한 버튼만들기 질문입니다.
알고리즘영??
[급]다른 프로그램 실행...
함수를 알고 싶습니다.
[급..급..]og기반 Program에서
DC와 Bitmap의 관계?
전역 변수 사용법을 알려주세여...
splash는 꼭 SDI나 MDI에서만 되는지...
[질문] ActiveX에서 structure와 비슷한 형태로 사용하기..
내가 만든 클래스를 4대 클래스에 접근할 수 있는 방법
CEditView 클래스 의 클라이언트영역에 폰트를 바꿀려면.
조이스틱을 MFC에서 다루는 방법좀 알려주세요.
마스터 볼륨에서 마이크 옵션 컨트롤하기
타이틀바 속성 뺀 다이얼로그 에서 작업표시줄에 아이콘 표시하려면?
도형 이동하는 방법 알려주세요
고급기술 한가지 가르쳐 주세요
릴리즈모드에서 디버그모드로 바꾸는 법
다이얼로그에 jpg 올리려면 어떻게 하죠?
SendMessage로 데이타를 보내려는데......
시리얼화(serialization)에 대한 개념이 궁금해서요???
공부하는 방법이 영..; 감을 못잡겠네요
CEdit 개체에서 키보드 입력을 받지 않도록 하는 방법이요?
Bitblt()에 대하여
fgets()에 대하여
SDI에서 MoveWindow()를 통해 윈도우 전체 영역 이동하기...
IHTMLDocument3 Interface 를 사용하고 싶을경우는??
이런 오류를 경험 해보신분.........
바탕화면 위,아래에 도킹되는 윈도우
split window에서 보더 없애는 법.
메신져의 자리비움 기능
[질문]바꿀 수 있는 다이얼로그의 바탕색 수(종류)????
윈도우에서 실행중인 프로그램을 가져오는 방법
ShellExecute와 Win2000 ?
스트리밍기술을 배우고싶은데 어떻게 해야..
원하는 디렉토리 안의 디렉토리 리스트를 캐취해오고 싶습니다.
Tiff 그림 화일 포맷에 관한 c소스를 찾습니다.
[질]release 컴파일 후 OCX의 소켓이 다운되는 이유....
Window 좌표setting 함수에 대해
초기 화면view에 propersheet를 삽입하려고 합니다.
음성소켓의 전송 G723.1 코덱으로...
답변부탁드립니다꼭이요
장난치다가 제가 개 안경을 밟았다고 돈 반값만 달래요!!! 어떻게 해야돼
에러좀 잡아주세요!!
MFC SDI>> 이게 왜 지역 변수 선언이 안된다는 것인지?
크기가 차이가 있는이유는요?
sql server 7.0 연동..시작할때 로그인문제..
워크레프트3
리스트컨트롤에 색깔 넣기..
Html help를 어떻게..
Internet Explorer 의 Temp Directory
Picture 콘트롤에 있는 비트맵 이미지 바꾸기
모드 변환하는거............(0점 좌표)
클라이언트 영역에 아이콘 그리는 방법????
현재 화면의 크기를 구할려면..??
저 좋아하는 사람이 있어요.
bitmap파일을 직접 로드하고 싶어요.
Out-of-band 라는 것이 머죠??
프로세스 동기화문제..
간단하지만 풀지 못하는 에러???;;
TWIP에 관하여
파일 입력..
메세지를박스 자동으로 없앨수 있나요?
트리의 TVN_ENDLABELEDIT에 관해서...
string형을 char배열에 치환하는 함수..?
하드웨어통신 프로그램에 대한 조언 부탁합니다.
인간관계에서 이상적인 관계를 맺기 위해 필요한 것은?
C++프로그램을 웹에...???
데이타베이스에 관한 문제??
USB 포트를 이용하여 2대의 PC사이에서 통신을 할려고 합니다.
경로(폴더) 선택 대화상자
프로퍼티 시트의 위치 조정..
담배/마약 ?
MFC 클라이언트 배경화면에 대하여 질문입니다.
오라클 db에 접속하는 방법좀...
Group Box에 색깔 입히기....
ActiveX Web에 올릴때..
포인터..?
odbc 데이터 원본이 없는경우는?
StretchDIBits함수의 인자를 어떻게 채우지요..
sizeof() 외 2개 더...
acmStream 계열 함수에 관한 질문
공용다이알로그에서 멀티Selectting하기
디버깅중 어셈블리 코드로 넘어갑니다.
부모 다이얼로그 포인터 얻어오는 방법
라디오 버튼에 관한 질문 입니다.
배열로 저장된 이미지 데이터를 화면에 뿌려주려면??
동적으로 생성한 리스트 컨트롤의 항목이 픽쳐 컨트롤 때문에 안보여요.
개인 방화벽과 같은 프로그램은 어떻게 만드나요?
OCX 웹브라우저와 연동하여 Debug하기
Window에도 fork라는 함수가 있나여..??
새로운 윈도우의 생성이 않됩니다.
DoDataExchange 같은 함수를 SDK 에서 쓰려면 ?
P/G 로딩될때 dialogBar에 그림을 넣고 싶은데요...
부탁드립니다. 오류검사
프로퍼티에서 질문 또다시..
급합니다. 적분하는 프로그램짜는 법좀 가르쳐주세요...
이런 함수 있나요?
인류 최악의 범죄는?
int형과 float형에 관한 질문 ?
vc++6 에서..
Wav파일 재생시 이상한 소리가....
Detected Memory Leak?
스플리트윈도를 이용한 탐색기를 만들때....
콤보박스
이것이 도대체 무슨 에러인지??
디렉토리 만드는법
[질문]마우스를 클릭했을때 스크롤 되는 방법?
DrawText 에서 글자배경 투명하게 하려면 ??
라디오 버튼의 기본 설정 방법은 ......
"C"를 배워보고자 합니다.
CRect::PtInRect()에 대한 설명 좀 부탁합니다.
구조체에서 CString을 사용할수 있는지요...
형 변환시 에러가 뜹니다.
도와 주세요
Install Shield로 인스톨 실행 화일을 만들고자 합니다.
임의의 값을 Edit해보려고 합니다.
구조체를 연결리스트로 구성할수 있는 방법....
스레드에 데이터 전송하기
어떻게 해서 키가 크나염..?
소켓 프로그램에서....
CTreeCtrl에서 item 순서 바꾸는 방법 좀 ...
CString 값을 int 형(16진수)으로 변환하려면
왜 ON_COMMAND_RANGE가 지워지죠?
win2000에서...
그래픽 프로그램에서의 필터를 ....!
폴더 알아내기....
주어진데이타(x,y)로 그래프를 그리는 방법
답변 부탁드림다..
TCP ->UDP
파일찾기
ComboBox 에 관하여
Application을 자동으로 저장하려면???
스트링다루는문젭니다.
게임을 만들고싶습니다.
[질문] MFC왕초보의 두가지 질문입니다.
View에서 DialogBar의 RadioButton의 control
CDROM에 CD가 들어있는 지 없는 확인하는 방법..
에디트창에서
G가 'ㅈ'소리가 나는때...
리스트 컨트롤에 색깔 넣고 싶어요
그래프를 표현하기 위한 ActiveX Control소개 부탁...
원격강의 관련 질문
[급]avi플레이어에관한질문?
다른 언어로 작성된 소켓 프로그램
링크에러
nt 4.0 에서 directX8.0 과 direct8.0 SDK 가 설
다이얼로그바 여러개 바꿔가며 쓰는 법
strcpy와 lstrcpy의 차이점이 뭐죠?
CEditView..의 내용..
Active X 만들 때 프로퍼티 추가 방법요~~~
가상키보드를 이용하여 웹페이지의 에디터창에 글쓰는 방법
auto run 프로그램
raw파일이 어떻게 저장되는지?
프로그램 실행중에 콘트롤(edit, button) 옮기기..
ActiveX Server Component 에서...
Top,Left 구하기
초 단위를 시-분-초로 바꾸는 방법??
slider control 만들기
com 객체에 인터페이스를 추가하려면 어떻게 하죠?
dllimport, dllexport를 설명해주세요.. 자세히,,
[질문] 이미지데이터를 가장 빠르게 화면 출력하려면...
메모리 사용을 최소화 하는 방법...
프로그램 실행 도중 window에서 컨트롤 움직이기
현재 OS 알아내는 API
고수님들 제발~~~
DirectX에 관하여...
ERROR_SUCCESS ?
간단한 배열입니다.
dialog 에서
Access Violation...
installshield 프로그램 사용법 있으신분..
BMP 파일로 Wallpaper 셋팅하기
[질문union] 에러가 나네여
우리 아이들 집안에서의 바람직한 성교육은?
시리얼통신 프로그램 구합니다.
DIRECT X 공부를 시작하는데용... MFC 에서 구현할까.. 아님.
여러 cast 연산자의 구분?
동적메뉴
일출과 일몰중 더 멋있는 것은 요?
다이알로그박스나 폼뷰에서 탭 순서를 바꾸려면..
리스트컨트롤에서 컬럼단위로 정렬하기.
왜 미인은 잠꾸러기 라고 할까요??
[질문] MSND Development Platform ?
UI(user interface)Thread 에서 작업스레드 생성해서
sub classing된 에디트 박스에서의 copy&paste문제..
SendMessage에서...
하드웨어 정보를 알 수 있는 방법이 있을 까요?
애니메이션 컨트롤에 쓸수있는 AVI 만드는 법이나 구할수....
socket 프로그램에서 타이머 질문인데요.
레지스트리 값 읽어오기..
정수의 금액표시
c++과 msdn을 설치하려면 ...?
Remote Desktop Protocol에대해서..
회원인증에 관한 내용입니다.
시스템메뉴손대기
[질문] dialog based에서 redraw..
Tab Control에서 질문
후킹에 대한 질문.....
제발.....트리 컨트롤......
VC에서 자바 Function들을 사용할 수 있나요?
[급-질문]ReadEventLog 사용법
다이얼로그바에 배경색을 넣고 싶거든요.
두개의 MDB File 을 동시에 open할수있는지요.
VC++초보 핸들뜻이 무엇입니까?
프로젝트에서 파일을 삭제 할려면..
assert 관련 질문
이것좀 도와주세요!!!!
남편을 이해할수 없네여..
웹하드 구현하기?
CAsyncSocket에서 Create를 하려는데요..
Message Queue 사용법에 대해서 알고싶습니다.
GetWindowLong() 과 GetClassLong() 은 뭐하는 거
서비스로 등록시킨 프로그램에서...
이상해요 이상해요 이상해염!!!!!!!!!!!!!!!!!황당.;;
작업표시줄에 아이콘 넣기
트리 컨트롤에서요.....
리스트 컨트롤에서 원하는 색으로 리스트 추가
ODBC(RECORDSET)으로 연결해서 INSERT처리는 어떻게...
제가...
[급질문!!] 소켓 프로그래밍 전문가님 꼭 좀 도와 주세영.
연결리스트 (Linked list)에 대해서....
다이얼로그???
Edit Box에서..
리스트 박스에서.....
DAO 배포문제.
fopen()에 대해서.....
뭐가 문제죠?
스레드를 잠시 멈추게 하려면?
피임법
시작 > 실행과 같은걸 만들려고 합니다...
::MoveFile()에 대해서......
API 와 MFC 어느것을.....!
슬라이더 (slider) 컨트롤 사용
API함수중에.....
대화상자가 안떠요.....
CFile에 관한 질문다시 올립니다.
분할윈도우에 대한 질문입니다.
대화상자의 크기영역을 알아내는 함수
MDB 파일에서 Requery로 찾은 데이타
다이얼로그에서 현재 포커스가 있는 컨트롤 찾기.
메뉴에 대해서.....
클라이언트/서버에서 회원인증에 관한 것입니다.
도와주세요...
윈도우 사이즈 조절
Excel 파일 저장시 다른 쉬트 사용하기??
익스플로어 형태의 툴바구성
구조를 모르는 DB 테이블의 레코드 삭제.
비주얼C++ 에서 OCX를 사용하고 싶은데...
Asp 에서 OCX 를 붙이는방법??
view클래스의 멤버를 쓸려면 어떻게......
윈도에서 네트웍상의 패킷을 잡는 방법.
CEdit 에서 글자수 제한과 마지막에 캐리지 리턴 넣는 방법
Unhandled exception 에러가 나는데 어디가 잘못된건지??
등록 정보랑 프로그램 연결 대화상자........
GetLastError에 대해서......
[질문]Windows CE를 PC에 포팅할려면..
우리 나라에 마법사들이 존재하고 있다면?
공용컨트롤 사용하는 방법........이....
MainFrame에서 ViewClass를 사용할때 에러가 나요..
DB를 오라클을 쓸려고 하는데??
App에서 View의 함수 호출
VC++내에서 직접 DAO를 써서 mdb를 만드는데 데이타 타입때문에..
프로그램 실행중 중단하는 방법?????
워드 가져다 쓰기..
메모리 관리에 대해
다른 클래스의 함수 호출 방법.
윈도우 만들기...
이거 뭐가 문제인지 좀 가르쳐주세요...
CFile에서 정해진 경로에서 파일 불르기에 관한 질문입니다.
볼이 뭐예요?
[질문] WIN32_LEAN_AND_MEAN ?
시간을 SETTING하는법 ( SetLocalTime을 이용하여...
가로방향 인쇄를 하고 싶습니다.
화일입출력에서...
서버로부터 클라이언트가 메세지 받을때
view 를 만들려고 합니다.
ODBC에서 DB table 연결...
NT에서 서비스 프로그램 등록
lan tcp/ip 통신중에
그래프와 도표..
버튼들이 사라집니다.....
eeswt.dll 요청 !!
ListView의 특정 라인에 바탕색을 넣는 방법?
자식윈도우에서 발생한 이벤트를 부모 윈도우 프로시저에서 처리하는 방법..
현재 위치한 폴더 알아내는 방법과 폴더생성하는 방법
다이얼 로그 클래스 포인터 얻기...................
포커스가 가 있는 버튼에 엔터키가 안먹습니다.
질문..
Edit 박스에 글을쓰면 그 글을..멤버변수로 저장할수있나여?..
CIPAddressCtrl 을 char배열로 변환하는 방법이 있나요?
다이얼로그에서 뷰 사용하기
고수님들의 조언부탁드립니다. (이것때문에 죽겠습니다. ㅜ.ㅡ)
SetTitle() 함수에 대한 설명좀 부탁^^..
레코드삭제시의 궁금한점.
[형변환]long->CSting 형으로
움직이는 메뉴나 프레임 만드는 법좀 가르켜주세용
정말 간단한거
버튼의 포인터???
시간형 레코드값에 NULL값을 넣을 수 있나요?
Random 함수에 관하여
(ODBC)sql data type (꼭 좀 부탁..)
다른 PC의 레지스트리값을 바꿔보고 싶습니다.
모달리스 에서...
특정 위치의 픽셀 정보(색상) 알아내기..
BIOS정보는 OS에 따라 어떻게 가져오는지요?
ActiveX에 Listcontrl
CRecordset에서 login dialog box 안뜨게???
switch()함수에 대해서???
파일이 잘 안 열어져요...
.tlb 파일에 관하여
제발 도와주세요...
키보드 반응에 관해...
[질문]이런 콘트롤은 있는지요...
record를 sort하고 싶은데요..
LineIn Assembly에서의 배열...
api socket server/client 자료 구함
넘 쉬운질문인가..?
스레드 중지..
WAB화일의 위치를 가져오고 싶습니다.
좀 이상해서 질문드립니다..
보고 싶은 영역만 보기...
API 에서 DB연결....
다른프로그램의 확인버튼누르기
WideCharToMultiByte 함수 설명 부탁드립니다.
제발 답변좀 해주세요~~~~~~~~~~
점수가 없어서리..
Visual c++을 설치하고 나서....
CTreeCtrl::GetNextSiblingItem 에 대해서.....
소켓으로 포인터 데이터를 전송하고 싶습니다.
Direct Sound로 Play할 때 문제점
다이얼로그박스에서 분할뷰의 포인터 얻기
[질문]다이얼로그바 에 프로퍼티 시트 삽입할려면?
알집의 ToolBar이미지를 어떻게 구현해야될지.. ㅜ.ㅡ
데이터 형 변환시에 데이터 손실이 어느 정도 인가요?
프로퍼티 페이지의 크기 변경...
일반적인 메신져 프로그램에서....
비주얼 C++ 6.0의 기능이라면... 어떤것들이 있을까요?
추가된 form view의 static control 변수 바꾸기
CComObject<> 포인터 선언하는 방식을 이렇게 하면 안되나요?
스토어드 프로시져 사용법을 알고싶습니다.
자연출산 보다 제왕절개를 권하는 이유는?
EDIT BOX에서 줄바꿈 할때 말인데요.
DLL 에서 소켓통신하기...
idl 로 생성되는 파일을 다른 프로젝트에서 공유하고 싶어요
MDI에서 새로운 ChildFrame생성
Win32 Api함수를 이용해서 문자열에서 문자 축출하기..
텍스트 파일의 내용을 받아서 그래프로 뿌리기
Outlook Express 핸들 하기
CRecordSet의 m_pSet의 초기화는 어디서..
아주 초보적인 오비리스트 질문..
프린터포트를 각각 제어하고 싶어요.
좀 봐주세여...
자신 IP알아내려는 함수가 있는지요...???
Active x 에서 html로 값을 넘기려고 하는데요...
파일 fragment하는 소스좀 가르쳐 주세요......
Value is not within allowable range....?
메모리 릭이 뭐죠..
[질문]Invalidate()를 하면 리소스를 계속 잡아먹던데...
keydary 님...
Win32 Shell Programing. ㅡㅡa;
툴팁한 관한 짧은 질문..
dll을 만들었는데요.
delay 주는 방법.
CListCtrl 에서 글씨 색 변경
mfc에서 메뉴항목 추가를 공부하는중에...초보가..ㅜ.ㅜ
리스트 컨트롤에서.......
P2P 에 대해서 자세히 알고 싶습니다.
왜 메시지가.......
[급함]2차원 배열을 함수에서 인수로 받아야만 해요
다이얼로그를 플랫스타일로 만들려면...
다이얼로그바
CMonthCalCtrl 에서의 버그...?
Debug Assertion Failed Error
제발 봐주세요~~~~~~~~
debug로 컴파일시에는 에러가 발생치 않는데.. release시 에러.
CEdiView에서 Edit창의 맨앞에 라인 번호를 추가하려면...
리스트 컨트롤을 리소스서 정렬기능을 활성화하여 사용하려는데요
리스트의 헤더를 왼쪽에 위치하는 방법
난 바보인가.........
Burst모드 vs Handshake모드
띄어쓰기요~~~~~~이게 왜 않되죠~~?
남편을 이해할수 없네여..
Edit control 에서여
마우스 동작 영역 조정....?
쓰레드에서의 메모리 동적 할당/해제
EditBox에 임의의 코드넣기
뷰에서 함수를 추가하면
MDI에서 Child를 종료시키는 과정에 일어난 에러
MS사의 "Visual Studio 6.0 Service 이게...
초본데 주석 좀..
뷰 전환에 대해서 질문 드립니당..
소켓에 대한 질문입니다.
주석을 좀...
파일선택 다이얼로그에서 선택된 파일이름얻기..
스트링(CString)을 내 하드에 저장하는 방법을 가르쳐 주세여....
Edit박스에서 hexa로 출력
odl 파일
멤버함수창이 안뜹니다.
vcm 사용법에 대해서 도움을 요청드립니다....
Internet Explorer 새로고침...
뷰에서 라인 그리기 급합니다..제가 초보라서^^
과자봉지 안에 들어있는 과자모양들은 모두 다른데 어떻게 그렇게 다른모양을
50대 남자분인데...
16진수 관련 도와주세요.
이런 에러를 해결하려면
API 소스를 MFC로 불러와 ODBC 사용하기??
[초보질문] EditView에서
UDP통신을 하고 있는데요.
Cab 파일을 등록하고 설치하는 배포 프로그램 만들기
리소스 Load Failed..
LPCSTR을 BYTE로 형변환
ddk를 공부하려고 합니다. 도움을 부탁드립니다.
분할뷰(폼뷰와 뷰)에서..뷰 내용을 선택한후 폼뷰에서 삭제시...질문
VC에 있는 워크스페이스와 같은 기능을 하는 소스나 참고자료 부탁합니다.
ATL에서 여러개의 class를 만들어서 사용하는 방법
ListView의 일부 칼럼을 우측정렬하기
InitDialog에서 DTPICKER컨트롤에 특정날짜를 셋팅하는 방법
메인 프레임 클래스 이름 만들어 주기
ChartFX 어떻게 사용하나요?
점수 다걸고 질문있습니다.
Link 에러가 나서 그러는데요.
리소스를 열수 없습니다.
CDC 에 그려져 있는 일정 영역의 내용을 CBitmap으로 내릴려면.
이 화면에서도 보이는 툴바와 View 사이의 구분선 구현은...?
dll 분석방법좀 알려주세요
MDI에서
listview에서 한 item이 여러 라인을 가질수 있는지.
Api 에서 DLL 연결해서 사용하기
visual C++에서 모터제어 법
쓰레드 프로그램에 관련된 질문을 드립니다.
CreateThread 에서여
2개의 ASF 파일을 합치는 방법?
CString -> LPCOLESTR 형변환
특정 컨트롤이 위치해 있는 좌표값 얻기
new 로 컨트롤 동적생성시킨 다음 delete 시키기
listCtrl에서의 드래그를 할려구
Application간의 Message전달
중국어 NT에서...
DB Table list에서 primary key 얻어 오는 방법좀...
CAsyncSocket을 사용한 파일전송시 잘라보내는 방법 갈켜주세요.
레지스트리의 값을 읽어올때요.. 데이터가 자꾸 깨집니다.
include 문에 관해??
특정디렉토리의 파일 갯수를 알아내기
INVALIDARG 로 리턴하는 메소드 는 클라이언트에서 어떻게 에러 체
생성자 함수의 파라미터..
계산기 만들기
clrscr명령은 쓰면 안되나요?
메세지에서 int 형을 CString으로 바꾸어 출력하는법
ActiveX에서 ftpconnection 이럴때는...
바탕화면 영역 바꾸기
system idle process가 뭐하는건지 가르쳐 주세요
E메일 클라이언트..
oledb 에서 필터조건주기
다른 Dll을 로드해서 다른 Dll 만들기...
CRgn사용법에 대하여...
OPEN GL 관련 사이트 소개 부탁합니다...
이상하네요..초보임다..
랜상의 컴퓨터 리스트 알아내기
비주얼 씨에서 이진수에 관한 질문입니다.
NT4.0에서 작업관리자의 프로세서 마침을 구현하고 싶습니다.
하드웨어 장치에서 읽은 그림을 빨리 출력하기
메시지 박스를 자동으로 없애고 싶으면
settimer() 함수사용법
트리컨트롤에서 아이템 선택시 왜 이미지가 바뀔까요?
메소드의 인자가 올바르지 않으며 리턴시킬려고 하거든요
주석을 ...
out 파리미터를 2개 주면 스마트 포인터 쓸수 있나요?
CRichEditView에서 CStringArray의 값을 화면에
[질문] Edit box에서 영문만 입력받고 싶습니다.
팔,다리가얇아서고민이에요,굵어지고싶어요
죄악에 적합한 색은?
소켓프로그램에서요...상대방의 IP를 얻어오는 방법의 정석은 과연?
[질문]MDI에서 활성화된 차일드윈도우얻기의 에러가...(Plz...)
ActiveX에서 웹브라우저를 종료시키려면
미리 알수 없는 컨트롤 삭제하기
FTP 에 관한 질문입니다...(MFC...혹은...API)
FormView에서 오픈한 Dialog의 Edit 값을 가져오고 싶어요~
windows98se인데 내 컴퓨터 들어갈때 문제가 있어요
산부인과
아웃룩 익스프레스를 띄우고 자동으로 특정화일을 첨부 하도록 하고 싶슴다
VB의 Chr() 함수와 동일한 C++ 함수는?
제 프로그램에서 다른 프로그램을 호출....
연결자가 무엇인지...
리모콘 만드는법...
콘솔모드에서요...MFC클래스를 사용하는 방법은 무엇인가요?
화살표 키보드 메세지에 대해서...
ntdll 에서 error가 나거든요.
툴바(리바)에서 256컬러 비트맵 아이콘을 사용하는데 배경을 투명하게..
[질문]MDI에서 뷰클래스의 멤버함수 참조하는 방법좀 부탁합니다.
vb 에서 obuffer5 = Chr(2) 를 vc++ 로 바꾸려면 어떻
GDI 객체에 대해서 질문이 있습니다.
URL decoder
collection class 에 관한..(map/dictionary)
[질문] 자식윈도우의 위치를 얻는 방법
프로그램 패키지를 만들기(인스톨 쉴드 없이)
Url을 입력받아 html파일 가져오기..근데 아뒤와 패스워드 필요!!
질투에 적합한 색
인스톨쉴드에서 파일 존재체크 방법
다이알 로그 베이스에서 버튼 하나를 눌러서 다른 다이알 로그 박스 띄우는
Edit Box에 입력이 않됩니다.
리스트컨트롤(Report 스타일)안에다가 콤보박스를 넣는 방법
도스 명령어중 IP 주소 얻는 명령어..
시리얼 통신에서 버퍼에 있는 데이터를 editbox로 출력하는 방법..
oledb 에서 말하는 bookmark 가 뭐죠?
[급합니다]2차원동적배열할당을 삭제하는 방법
HBRUSH CTestView::OnCtlColor에서의 메모리 누수
윈도우 크기 조정
SDK 질문있습니다.........
[질문]레지스트리에 값 쓰기
Accept함수에 대해 좀 알려주세요..
sndPlaySound함수 실행시 에러...
프로그램 실행과 동시에 트레이 실행
대인관계잘하는법좀..
내 컴의 도메인 이름을 알 수 있는 방법이 있을까요..???
VISUAL C++로 FTP프로그램을 짜보고 싶습니다.
멀티스레딩시 이렇게 하는것이 괜찮을까요?
초보자들이 알수 있는 OpenGL 소스 좀~~~
File의 내용을 읽어서 메모리에 저장할때...
주소록을 MFC로 짤려면 다이알로그기반으로 해야함니까
클래스는 어떻게 삭제하나요?
DB에 관련한 기본적인 질문입니다. 좀 봐주세요..
pDoc가 포인터 변수인데 왜 &pDoc라고 쓴 것인가요?
마우스가 다이알로그 밖에 나갔을 때 이벤트는?
교복이 비싼 이유는?
다이얼로그 한번만 뛰우기
아주 초보적인 질문.. UNICode로 컴파일 할려면....
AFX_DATA
멀티 테스킹 기능 해제.
윈도우내에 놓여있는 DlgItem의 위치를 알아내는 방법은?
[질문] SDI에 도킹된 바.. 보였다 안보였다...
ISAM 화일에 관하여....
파일 생성 어떻게 하나요.
집에 불났을 때 가장 먼저 갖고 나올 세가지는?
[질문]activex 관련 질문.( 웹페이지 새로고침에서..)
포인터에 관한 질문이에여..
버전체크 & 작업표시줄에 안나타나게 하려면?
sync, async 소켓 프로그래밍...
vc++ 왕초보질문
문자열 짜르기
소켓 프로그램 내에서 소켓 2개 생성...
CALLBACK로 TIMER 응용하기
클라이언트에서
edit box에 입력한 CString값을 배열에 입력하는 방법....
자동차 보험 가입 (본인차를 타인 명의로 가입?)
제 컴퓨터에 있는 어떤 프로그래을 찾아서 실행시키려고 합니다.
원소켓에서여
[왕초보] 2개이상 리턴값쓰기...
초보의 질문(웨이브파일은 어케 만들거나 얻을 수 있나여?)
이상한 AppWizard
간단한 부탁입니다...
이놈의 vc가 미쳤나.........
Static Control에서 AutoScroll은??
웹페이지에서 디버그창 뜨는문제.
vc++ 왕초보질문
DrawBitmap()의 사용법이 궁금합니다.
IErrorInfo는 어떻게 사용하는 것인지?
전문개발자님께 질문드립니다.
리소스 파일 추가할때 질문요...
MFC 로 생성한 뷰의 색깔 바꾸는 방법
와~! 이해 X MFC WIN32 로 넘아가야 겠는데 질문!!!
ODBC를 거치지 않고 원격지 db를 접속할 수 있나요?
sdk에서 파일 입출력문제입니다.
1:1 통신 가능한 프로그램 입니다..1:다 연결을 하고 싶은데요..
ShowWindow()함수에서요
UI Thread
MACRO 에서. 날짜 넣는 법이요..
서버와 클라이언트간의 통신.
분할뷰에서 포인터 얻기
자위방법이여
콤보박스에서 프로그램 종료후에도 값받기..
에러 좀 해결해 주세요
첨 보는 문법입니다. 제발 도와주세여...^^;;
한문자 읽어오기
COM에서 QueryInterface와AddRef등이 안보여요
[질문]콤보박스에서여 디폴트로 어떤 값이 보여지게 할 수 있나요??
[급질문]파일오픈창 열때 원하는 경로를 디폴트디렉토리로 지정할수 없나요?
남자 성기가 이상합니다..;;
Editbox에서 Enter값의 들어왔는지 알고 싶은데요..
MySql안의 데이타를 검색, 수정, 삽입 하려면...
대장암은 어떻게 고칠수 있나요?
SetTimer 함수에 대해...
처음 타인을 만났을 때 그 들이 생각할까봐
CFile 위치지정
listcontrol에 글자색을 변환시킬수 있나염???
리눅스의 C와 윈도우의 MFC간의 소켓통신 어떻게 하나요?
ordinal에 대해...
Win API프로그램에 OCX넣기
익스플로러에서 새창이 생성될때 그 창의 포인터를 얻는 방법
선생님이, 방학때도 월급을받는이유?
한번 실행된 프로그램이 또다시 실행되는걸 막으려면...
소캣통신에서 두개의 패킷이 가끔 붙어요..
gif animation Load & Save
에디트박스에서 엔터키 인식
다중 널문자가 포함된 BYTE 정보를 널 문자 포함, 다른 바이트 변수로
FarPoint사의 Spread사용중.....
이 알고리즘좀 알려 주세여..
모달리스와 모달 다이알로그..
View Class 중OnPaint
레지스트리에 저장..
툴바에 관해..
특정 폴더를 감시하여..
sql 구문에서...
문제좀 해결해 주셔요~~~~~~~~
이 어셈블리좀 번역 부탁드립니다.. (아주 급함,. 꼭 필요.. ㅠㅠ)
CStringList::GetTail함수,...
잘못 등록한 클래스 삭제..
CView_SDI 프로그램에서 메인창의 색깔 및 메뉴 색깔 바꾸기..?
MS FLEX GRID CONTROL 6.0(CMSFlexGrid)
VB dll 을 vc++에서 호출하려고 하는데......
ATL control에서 해당 컨트롤이 시작되고 종료될때 수행할 코드
(아주 급함) 다중접속 프로그램을 짜고 있습니다.. 연결리스트 노드 삭제
(아주 급함) 다중접속에서 연결리스트에서 자꾸 에러가 남니다...
리스트컨롤 파일저장에서 업로드
(꼭 필요함) X 버튼을 눌렀을때.. 종료하지말고 다른 함수 호출하기
리스트 컨트롤에 눌린 키 얻는 방법
리스트 컨트롤에서 선택모드(한개만, 멀티 선택) 변경방법
분할 윈도우안에 또 분할하기~~~
[질문] Win32API로 만든 클래스를 어떻게 DLL로 바꾸나요...?
variables 창은 프린트가 안 되나여?
툴바 높이 설정..
사운드음소거가삭제되서,,ㅠ,ㅠ소리가안나와염,,어떻하져,, ?
CListCtrl DrawItem에서 메모리 문제...
코가펩시와 펩시콜라 성분은 똑같나요?
outlook 을 이용한 메일보내기
Menu의 font는 어떻게 변경하나요..?
API와 함수의 파라미터에 대한 자세한 설명 부탁드립니다.
에디트박스에서...
간단한 질문.. 프로그램 스타일문제인데.. #define문의 이용에 대해
다이알로그박스의 스크롤이 되지않아요...왜 그런가요?
html문서 다이얼 로그에서 보여주기
교차로에서 우회할때 사고가 많이나는데..줄일 수 있는 획기적인 방법이 없
컴 퓨 터 호 ㅏ면 이 ,..
리니지2 게임 NVIDIA RVIA TNT2 Model64/Model64
산부인과에서는
홈페이지 제작 아르바이트
(PHP,자바스크립) 로그인등..
키스하는 법을 좀.;;
물때문에 귀가맞혔어요.
안경을 밟은 느낌도 안났는데 밟았다고 돈 달래요 줘야되요?
메모리가 이상해요.
다르게 한글을 열수 있는 방법이나 복구할 수 있는 방법은 없는건가요?
테크닉???
다리를 빠른시간에 쉽게 쨀순없나요?
수녀님 머리에 쓰는 것을 두건이라고 하나요
전세기간 만기전 이사를 하려는데요...
컴퓨터를자꾸키면이상한게나오던데.......
미사때 여자들은 왜 하얀 천을 머리에 쓰죠?
처녀막이 찢어지면 어떻게 돼나요
재미있는 게임 소개좀;
요즘 퇴직연령은 몇 살이죠
개가 안경을 밟았다고 돈달래요!!!!!!보새요!
산부인과
안녕하세요 좋은 기회에 글올립니다..
표현력을 기르는 법은?
수능 재수에 관한 질문이요
홍길동에 대한것
안경을 밟았다고 돈달래요 밟은 느낌도 안났는데 막 이상한 이유 대면서 달
컴퓨터 비아칩 설치에 관한 문의
레스포삭
김정민의 "바닷가에서" 리메이크한걸로 알고있는데 원곡은
한 사람과 평생부부가 가능하나요
세법법전 구입할려면 어떤책 어디에서 구입합니까?
무궁화는 왜 밤에 지고 낮에 피나요?
답변기다리겠습니다..
힐리스 타면 다이어트 되나요?
쉽고 성과가 좋은 운동 없을까요?
사실저...
'만들다'를 줄이면 '만듬'이 맞나요? 아니
파일을 켜면 에러 메세지가 떠요 어떻게하져...
[수성]의 관하여서~~^^(30포인트)
행복에 적합한 색
행복할 때 필요한 것
금붕어비늘인지?뭔지 모르겠지만 하얀게 벗겨져요..
혼전 성관계는 필요하나요
ip공유기 연결 시 컴퓨터가..
클릭비 4집앨범 의상 협찬은 어디서 받았나여?
화가 날때 필요한 것?
상 많이 받으면요.
코덱은 어떻게 다운받나요?
화장과 매장 중 어느 게 더 낫죠?
스타크래프트할때 다운됩니다 (게임중 아님)
압축파일을 다운받을때...
가장 싸고 믿을 만한 레스포삭 인터넷 쇼핑몰은?
관계후 이상하게 피가 나와요...
버뮤다삼각지가무엇인가여
팽이버섯이 우리몸어디에 좋은가요..??
머리숱을 줄일순 없나요?
왜 1.5리터 야쿠르트는 없는 걸까?
세상에서 제일 돈이 많은 부자는 누구인가요?
'만듦'이 맞는 이유도 좀 적어 주시면
아인슈타인의 뇌의 가치는어느정도죠?
클립을 어떻게하면 자화시킬 수 있을까요?
자꾸 손가락을 빨아서...
중국을 왜 이웃나라라고 안하나요?
D드라이브랑 E드라이브가 없어요...컴에 관한거
음..
포맷하는 과정에서..
처녀막이 터지면 소리도나요?피는 얼마나/
우유에 밥 말아 먹으면 어떠세요?
땅을삽으로계속파면서들어가면지구반대쪽까지가나요?
컴을 업하려는데..(지식지수30점 꼭 도움이 될만한 답변좀)
토마스 만
태그에 대해 알고 싶습니다.
리눅스를 사용 할려고 하는데...50점..
여드름없애는 방법좀..
LCD게임도 베틀넷 되나요?
무진기행
Posted by 모과이IT
,


mysql-installer-web-community-5.6.22.0.msi

MySQL용 ODBC 드라이버를 설치하지 않고 직접 라이브러리를 이용하는 방법으로 MS Visual C++ 6.0 환경에서 MySQL을 접근하는 방법을 살펴보겠다. 이 방법은 MySQL Database가 어디 있든 상관없이 MySQL서버에 접근 권한 설정만 되어 있으면 상관없겠다.

여기서 제시한 방법은 내가 사용한 방법이지 결코 답은 아니다. 더 좋은 방법이 있다면 함께 공유했으면 한다.
또 환경이 Visual C++ 6.0 이라고 해서 .NET환경에 적용하지 못한다는 법은 없다. 다 참고가 되는 내용이라고 생각한다.

여기서는 Window에 Apache, PHP, MySQL을 자동적으로 설치해주는 WAMP를 설치하고 필요한 개발관련 C Include 파일과 Lib, DLL File를 설정한 다음, 간단한 예제로 설명을 마무리 하겠다.

1. Window 환경에서 APM(Apache, PHP, MySQL) 설치하기


Window환경에 APM을 설치하는 방법은 여러가지가 있다. 그중 가장 쉬운 방법은 이미 나왔는 APM설치관련 패키지를 이용하는 것이 있다. 나는 WAMP라는 훌륭한 APM통합환경을 구축해주는 프로그램으로 쉽게 설치할 수 있었다. 이에 대해서는 아래 링크를 참고하길 바란다.

http://blog.jidolstar.com/77

만약 외부에 MySQL이 있다면 원격에서 접근이 가능한지 확인한 후(mysql DB에 user테이블 host필드가 %로 설정하는 것 같이 외부 접근권한이 설정되어 있어야 한다.) 사용하면 되겠다.

2. C언어 개발관련 Include 파일 및 Lib파일 설치하기


C언어 개발관련 파일을 설치하기 위해 먼저 http://dev.mysql.com/ 에 접속해서 왼쪽메뉴에 Downloads > MySQL Community Server > 5.1(또는 6.0이상) 으로 들어간다. 여기서 Windows downloads에서 Window Essentials(x86)을 직접 Download하던가 Pick a mirror에 들어가서 다운로드 받으면 된다.

다운로드를 받아 실행한다. 다음으로 넘어가면 기본 Typical이 설정되어 있을텐데 Custom으로 바꾼뒤 다음으로 넘어가면 아래와 같은 화면이 나온다.

사용자 삽입 이미지


여기서 C Include Files/Lib Files 만 제외하고 전부 닫아준 다음, 설치를 하면 C:\Program Files\MySQL\MySQL Server 5.1 에 include 폴더와 lib 폴더가 생성된다. include 폴더에는 C언어나 C++에서 사용할 수 있는 MySQL 관련 Header 파일들이 있다. 그리고 lib\opt 폴더 안에는 우리가 사용할 libmysql.lib을 포함한 Lib파일들이 존재하는 것을 확인할 수 있다.

MS Visual C++ 을 실행하고 Tools > Options를 선택하면 아래와 같은 창이 뜬다. Directories 탭을 선택하고 Show directorries for: Include files를 선택한 다음 아래와 같이 Mysql관련 Header 파일이 있는 폴더의 경로를 입력한다. 이런 설정이 필요한 것은 #include <mysql.h> 처럼 <>로 사용할 수 있게 설정하기 위한 것이다. 만약 이렇게 하지 않으면 필요할 때마다 include에 있는 header파일을 전부 복사해서 자신의 프로젝트 폴더에 복사해서 #include "mysql.h" 처럼 사용해야 할 것이다.
사용자 삽입 이미지

그리고 Show directories for:를 Library files를 선택후 Lib가 존재하는 폴더의 경로를 입력하도록 한다.
이 작업을 하지 않으면  프로젝트를 새로 생성해서 작업할때 마다 필요한 lib를 복사해서 사용해야 하므로 아주 번거롭다. Lib파일은 DLL를 로드하고 링크하는 역할을 담당하게 된다.

사용자 삽입 이미지



3. libmysql.dll을 system32폴더에 복사하기


Visual C에서 MySQL을 사용하기 위해 libmysql.dll을 C:\windows\system32 폴더에 있어야 한다.
지금까지 설정만으로는 그렇게 되어 있지 않음을 알 수 있다. DLL 파일은 함수의 집합체라고 할 수 있다. Lib에 의해 로드가 되며 C언어에서는 사용되는 함수의 선언 Header파일로 접근이 가능하겠다.

MySQL의 함수 집합체인 DLL은 libmysql.dll은 앞서 APM을 설치했으므로 C:\wamp\php 폴더에 있다. libmysql.dll을 복사해서 C:\windows\system32 에 복사하면 되겠다.
만약 APM을 설치 안했다면 http://dev.mysql.com 에 접속해서 downloads>connector > Connector/PHP 로 들어가 mysql extention에서 for MySQL Server에 들어가 >>No thanks, just me to the download!를 선택해 다운로드 받아 압축을 풀면 libmysql.dll을 받을 수 있을 것이다.

만약 이 작업을 안한 상태에서 프로젝트 생성후 제작한 MySQL관련 프로그램 실행하면 libmysql.lib이 libmysql.dll을 로드하지 못해서 실행할 수 없다는 에러가 나올 것이다. 이 말은 자신의 프로그램의 결과물인 .exe파일 뿐 아니라 dll도 함께 배포해야한다는 것을 의미하기도 한다.


4. 간단한 예제


이 예제를 실행하기 전에 반드시 MySQL 계정에 자신의 계정 및 접속권한을 확인해야한다.
생각보다 어렵지 않게 실행할 수 있을 것이며

#define SOCKET int 는 맨 위해 #include <mysql.h>는 반드시 다른 include 포다 아래쪽에 있어야 에러를 발생하지 않는다.

#pragma comment()문은 lib를 프로젝트 셋팅할때마다 Project > Setting 에서 link에 libmysql.lib와 ws2_32.lib를 modules에 등록하는 번거로움을 덜기 위해 사용한다.

C코드 예제 (Language : c)
#define SOCKET int

#include <string.h>
#include <stdio.h>
#include <mysql.h>

#pragma comment(lib, "libmysql.lib")
#pragma comment(lib, "ws2_32.lib")   

#define DB_HOST "호스트 IP, 도메인 또는 localhost"
#define DB_USER "접속 ID"
#define DB_PASS "접속 암호"
#define DB_NAME "DB명"

#define SQL_CREATE_TABLE "CREATE TABLE `mysql_api_test` (\
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,\
    `num` INT NULL ,\
    `string` VARCHAR( 20 ) NULL \
    ) TYPE = MYISAM ;" //"
#define SQL_INSERT_RECORD "INSERT INTO `mysql_api_test` ( `id` , `num` , `string` ) \
    VALUES (\
    NULL , '%d', '%s'\
    );" //"
#define SQL_SELECT_RECORD "SELECT * FROM `mysql_api_test`"
#define SQL_DROP_TABLE "DROP TABLE `mysql_api_test`"

int main()
{
    MYSQL *connection=NULL, conn;
    MYSQL_RES *sql_result;
    MYSQL_ROW sql_row;
    int query_stat;
    int i;

    char query[255];

    mysql_init(&conn);

    // DB 연결
    connection = mysql_real_connect(&conn, DB_HOST,
        DB_USER, DB_PASS,DB_NAME, 3306,(char *)NULL, 0);
    if(connection==NULL)
    {
        fprintf(stderr, "Mysql connection error : %s", mysql_error(&conn));
        return 1;
    }

    // 테이블 생성
    query_stat=mysql_query(connection,SQL_CREATE_TABLE);
    if (query_stat != 0)
    {
        fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
        return 1;
    }

    // 레코드 삽입
    for(i=0;i<5;i++)
    {
        sprintf(query,SQL_INSERT_RECORD,100+i,"안녕하세요 지돌스타예요~");
        query_stat = mysql_query(connection, query);
        if (query_stat != 0)
        {
            fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
            return 1;
        }
    }

    // 셀렉트
    query_stat=mysql_query(connection,SQL_SELECT_RECORD);
    if (query_stat != 0)
    {
        fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
        return 1;
    }

    // 결과 출력
    sql_result=mysql_store_result(connection);
    while((sql_row=mysql_fetch_row(sql_result))!=NULL)
    {
        printf("%2s %2s %s\n",sql_row[0],sql_row[1],sql_row[2]);
    }
    mysql_free_result(sql_result);

    // 테이블 삭제
    query_stat=mysql_query(connection,SQL_DROP_TABLE);
    if (query_stat != 0)
    {
        fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
        return 1;
    }

    // DB 연결 닫기
    mysql_close(connection);
    return 0;
}



참고사이트

MySQL 공식 Development 사이트 : http://dev.mysql.com
MySQL++ : http://tangentsoft.net/mysql++/
MySQL API 사용하기 : http://deadwi.jaram.org/wiki/wikka.php?wakka=KnowingCppMySqlAPI
[그리즐리의 ATL/MFC 팁]MySQL 시작하기 : http://blog.naver.com/hello20/150021875380

글쓴이 : 지돌스타(http://blog.jidolstar.com/250)

'개발지식창고 > DataBase' 카테고리의 다른 글

[SQLITE] SQLITE 관련 사이트  (0) 2013.06.28
[SQLITE] 자료형  (0) 2013.06.28
MySQL : Data Type (1 of 2)  (0) 2010.08.31
MFC MYSQL 연동  (0) 2010.08.31
[MySQL] 기본명령어  (0) 2010.08.31
Posted by 모과이IT
,
MySQL 데이타 타입

MySQL의 데이타 타입은 수치, 문자열, 날짜와 시간, 공간 데이터 타입으로 분류된다.
우선 종류를 살펴 보자

수치 데이터 타입
  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • INT         - 정수
  • BIGINT
  • DECIMAL - 고정 소수
  • FLOAT     - 단정도 부동 소수
  • DOUBLE  - 배정도 부동 소수
  • BIT         - 비트 필드
문자열 데이터 타입
  • CHAR
  • VARCHAR
  • BINARY        - 이진 문자열
  • VARBINARY
  • TINYBLOB
  • BLOB            - Binary Large OBject
  • MEDIUMBLOB
  • LONGBLOB
  • TINYTEXT
  • MEDIMUTEXT
  • LONGTEXT
  • ENUM          - 열거형
  • SET             - 집합형
날짜와 시간 데이터 타입
  • DATE          - 날짜           ( CCYY-MM-DD )
  • TIME           - 시간           ( hh:mm:ss )
  • DATETIME   - 날짜와 시간 ( CCYY-MM-DD hh:mm:ss )
  • TIMESTAMP - 타입스탬프 ( CCYY-MM-DD hh:mm:ss )
  • YEAR           - 연도          ( CCYY 또는 YY )
공간 데이터 타입
  • GEOMETRY     - 공간 값
  • POINT             - 포인트(한 쌍의 X,Y 좌표)
  • LINESTRING    - 커브 (하나 이상의 POPINT 값)
  • PLYGON          - 폴리곤
  • GEOMETRYCOLLECTION  - GEOMETRY 값의 집합
  • MULTILINESTRING   - LINESTRING의 집합
  • MUlTIPOINT             - POINT 값의 집합
  • MULTIPOLYGON       - POLYGON 값의 집합

기본값
  •  AUTO_INCREMENT 속성을 가지는 컬럼을 제외한 모든 컬럼 타입에 대해 기본값이 명시되지 않았다면 숫자 컬럼의 기본 값은 0 이다.
  • TIMESTAMP를 제외한 날짜와 시간 타입에 대해서 기본 값은 "제로" 이다 (예, 0000-00-00 ) 
  • TIMESTAMP의 기본값은 컬럼의 현재 날짜와 시간이다.
  • ENUM 이외의 다른 문자열 타입에서 기본 값은 비어 있다. 
  • ENUM 에 기본 값은 첫번째 열거 요소이다.

어떤 칼럼들이 DEFAULT 절을 가지는지, 그리고 칼럼이 어떤 기본 값을 가지는지 살펴보려면 다음 명령을 이용한다.
mysql> SHOW CREATE TABLE [테이블 이름];

수치 데이타의 범위
 타입 부호 있는 값 부호 없는 값 저장 공간 
TINYINT [ (M) ] -128 ~ 127 0 ~ 255 1 바이트 
SMALLINT [ (M) ] -32768 ~ 32767 0 ~ 65535 2 바이트 
MEDIUMINT [ (M) ] -8388608 ~8388607  0 ~ 16777215 (2^24-1) 3 바이트
INT [ (M) ] -2147683648 ~ 2147483647  0 ~ 4294967295 (2^32-1)  4 바이트
BIGINT [ (M) ] -9223372036854775808 ~ 92233720368547758087   0~18446744073709551615 (2^64-1) 8 바이트 
DECIMAL ( [M[,D]] )  -  - M과 D에 따라 다름 
FLOAT [ (M,D ]   -  - 4 바이트 
DOUBLE [ (M,D) ]   -  - 8 바이트 
BIT[ (M) ]    0 ~ 2^M-1  M에 따라 다름

  • 정수  컬럼을 선언 할 때, 선택적인 크기 M을 지정할 수 있다. M은 1에서 255까지 정수 이다. 이것은 컬럼 값을 표시하는 데 사용되는 문자들의 수에만 관련이 있지 저장공간의 바이트 수와는 아무런 관련이 없다.
  • DECIMAL에서 M은 유효자리수, D는 소숫점 자리수를 나타낸다. M은 1부터 65, D는 0부터 30까지 값을 가지고 M보다 클 수 없다. (예를 들어 DECIMAL(5,1) 이라면 값의 범위는 -9999.9 ~ 9999.9 까지 이다.)
  • DECIMAL, DECIMAL, FIXED 은 동의어이다.
  • REAL은 DOUBLE과 동의어이다. (SQL 모드 REAL_AS_DEFAULT가 활성화 되면 REAL은 FLOAT와 동의어가 됨)
  • DOUBLE, FLOAT에서 M은 유효 자릿수 (1~255), D는 십진 자릿수 (0~30) 이다. DECIMAL과 달리 M,D의 지정은 선택사항이다.
문자열 데이타의 범위
 타입 최대 크기 필요한 저장공간
VARBINARY [ (M)  ] M 바이트 L+1 또는 2 바이트 
CHAR [ (M) ] M 문자 M x w 바이트
VARCHAR (M) M 문자 L+1 또는 2 바이트 
TINYBLOB 2^8-1 바이트  L+1 바이트 
BLOB 2^16-1 바이트  L+2 바이트 
MEDIUMBLOB  2^24-1 바이트  L+3 바이트
LONGBLOB 2^32-1 바이트  L+4 바이트 
TINYTEXT 2^8-1 문자 L+1 바이트 
TEXT 2^16-1 문자  L+2 바이트 
MEDIUMTEXT 2^24-1 문자 L+3 바이트 
LONGTEXT 2^32-1 문자  L+4 바이트 
ENUM('value1','value2', ...) 65,535개의 요소  1또는 2 바이트
SET('value1','value2', ...) 64개의 요소  1,2,3,4, 또는 8 바이트 
  • M은 컬럼 값의 최대 길이, L은 바이트 단위로 주어진 값의 실제 길이를 나타낸다.
  • BINARY(20)은 20바이트를 가지며, CHAR(20)은 20개의 문자를 가진다.

Reference
  • MySQL의 사용, 관리, 프로그래밍을 위한 완벽 가이드, Paul Dubois 저 / 김형훈 역, 지&선

'개발지식창고 > DataBase' 카테고리의 다른 글

[SQLITE] 자료형  (0) 2013.06.28
MFC 환경에서 MySQL 연동하는 방법  (0) 2010.08.31
MFC MYSQL 연동  (0) 2010.08.31
[MySQL] 기본명령어  (0) 2010.08.31
[MySQL] 데이타베이스명령어  (0) 2010.08.31
Posted by 모과이IT
,

가장 먼저 Mysql을 설치 하여야 한다.
설치법은 찾기가 쉽고 금방 설치할 수 있다. 대신 꼭 필요한 부분만 언급 하겠다.


꼭 참조 ~~
이제 안의 setup.exe을 실행시키면 마법사가 질문을 이것저것 던지는데 다음의 것만 신경쓰면 된다. (어차피 우리가 필요한것은라이브러리 파일일 뿐이다.) custom설치를 선택하고 다음처럼 라이브러리 파일만 설치하는 것으로 한다.

사용자 삽입 이미지

Developer component 가 바로 라이브러리 파일을 설치하는 것이다. 그냥 typical설치하면 이 라이브러리가 "절대!" 깔리지 않으니 반드시 커스텀 설치로 하길 바란다.

여기 그림에서 처럼 서버를 설치 하지 않은 것이 아니라 난 다 설치하여 사용하였다.

설치가 끝났으면 지금 아주 중요한 셋팅이 있다. 자료도 많고 했지만 .NET2005에서 하는 거
라 많은 실수를 했다.

1. 설치가 끝난 후 MySQL이 깔려 있는  폴더에 가면 다음 그림을 볼 수 있다.

사용자 삽입 이미지

2. 라이브러리와 인클루드 폴더를 도구 -> 옵션-> 프로젝트 및 솔루션 에서 다음 그림과 같이 디렉토리 설정를 걸어 두어야 한다.
1) 라이브러리 디렉토리 설정

사용자 삽입 이미지


2) include폴더 디렉토리 설정을 한다.
사용자 삽입 이미지

3. 이제 모든 설정은 끝이 나고 다음과 같이 프로젝트 폴더에 그림과 같이 libmySQL.dll과 libmysql 라이브러리 파일을 폴더로 복사한다. 이 파일은 쉽게 MySQL 설치 폴더에 가면 찾을 수 있다.

사용자 삽입 이미지


이렇게 설정은 끝이 난다.

다음은 실질적인 코딩을 하는 것이다.
먼저 stdafx.h에 다음과 같은 구문을 추가한다.
사용자 삽입 이미지
이렇게 추가 시킨 후

Doc.h에 다음과 같은 코드를 추가하였다. "127.0.0.1"을 호스트로 바꾸면 자기 컴퓨터에 서버의 호스트 주소가 되는 것이다.
사용자 삽입 이미지

이렇게 헤더 파일을 설정 후 Doc.cpp파일에 실질적인 코딩을 하였다.
사용자 삽입 이미지
이렇게 하여 DB와 연동이 되는 것을 확인할 수 있었다.

'개발지식창고 > DataBase' 카테고리의 다른 글

MFC 환경에서 MySQL 연동하는 방법  (0) 2010.08.31
MySQL : Data Type (1 of 2)  (0) 2010.08.31
[MySQL] 기본명령어  (0) 2010.08.31
[MySQL] 데이타베이스명령어  (0) 2010.08.31
[MySQL]MySQL 테이블수정  (0) 2010.08.31
Posted by 모과이IT
,