본문 바로가기

프로그래밍/VC/VC.NET/Cs

DLL(Dynamic Link Libraray)에 대한 이야기 DLL은 프로그램간에 공유가 가능하고 정적링크라이브러리와는 다른 기능을 가진다. 정적 라이브러리와의 차이점 정적 라이브러리는 실행 파일에 필요 라이브러리가 포함된것이며, DLL의 경우 실행파일에 포함되지않고, 실행파일이 메모리에 로드되어서 실행이 될때, 라이브러리가 메모리로 로드되어 실행파일과 링크된다. 결국 정적라이브러리일 경우 실행파일에 포함되므로, 실행파일자체가 커지지만, 독립적 사용이 가능하고, DLL은 파일의 용량은 상대적으로 적고 공유가 가능하지만, 독립적으로 사용하기는 어려워진다. 정적 라이브러리는 실행파일에 필요 모듈 호출부분에서 호출 모듈의 주소를 알아야 하지만, 동적 라이브러리는 실행파일이 메모리 상주할때나 되어야 라이브러리주소를 알수있다. DLL을 사용하면, 링크과정에서 포함이 된다고.. 더보기
RFC 번호, 약자 RFC 번호 의미 약자 742 Finger Protocol FINGER 768 User Datagram Protocol UDP 791 The Internet Protocol IP 793 Tranmission Control Protocol TCP 821 Simple Mail Transport Protocol SMTP 822 Format for Internet Massage MAIL 959 File Transfer Protocol FTP 988 Network News Transfer Protocol NNTP 1460 Post Office Protocol Version 3 POP3IDI_HAND 이 글은 스프링노트에서 작성되었습니다. 더보기
소켓 프로그래밍. Socket Programming. 소켓 프로그래밍은 네트워킹 프로그래밍중 가장 기본적이다. 소켓. Socket이란 통신상의 endpoint. 이 소켓.Socket은 핸들.Handle같은 식별번호라 생각하면 된다. 프로그램은 이 소켓을 바인딩해서 사용하게 된다. 종류 Stream Socket Datagram Socket TCP/IP Protocol UDP/IP Protocol 연결후 새로운 주소지정 필요없음 수신,발신 주소를 가짐. 별개의 경로를 가지고 목적지이동 순서보장 순서보장이 않됨 연결후 통신 연결 않됨 신뢰성보장 신뢰성보장않됨 송/수신시 확인필요 소켓프로그래밍에 필요한 MFC Class는 CAsyncSocket, CSocket. Winsock은 Stream, Datagram Socket 모두 지원. Stream 에선 SOCK_ST.. 더보기
MFC 네트워크 프로그래밍 관련 클래스 소켓 라이브러리는 인터넷 프로토콜의 프로그래밍을 위한 라이브러리로 개발 되었다. 이는 몇몇의 함수를 제외하고는 유닉스의 소켓함수와 동일하다. 분류 MFC클래스 지원 응용분야 WinSock APlc CSocket CAsyncSocket TCP/IP UDP/IP 모든 네트워크분야 채팅,네트워크게임 메일,상위프로토콜구현 Internet Service CInternetSession CInternetConnection CFtpConnection CGopherConnection CHttpConnection CFileFind FTP Gopher HTTP FTP,Gopher,Http 클라이언트 프로그램 Internet Server API CHtmlStream CHttpFilter CHttpFilterContext CH.. 더보기
DAO 관련 데이터 베이스 클래스 DAO는 VB에게 익숙한 인터페이스. 이는 데이터베이스를 엑세스하기 위해서 Jet db engine을 사용한다. Jet DB engine 은 MS의 Access의 엔진이다. 이 DAO는 객체지향 모델을 가지며, 관계형 DB 시스템에 대해 계층적 뷰를 제공한다. DAO 지원 MFC 클래스 CDaoWorkspace DB 엔진특성, 트랙잭션관리. 하나이상의 CDaoDatabase객체 관리 CDaoDatabase DB 연결관리 CDaoRecordset 레코드셋 표현,관리. 레코드셋은 테이블,다이너셋,스냅샷타입지원 CDaoRecordView 레코드셋 뷰제공. CFormView 기반. CDaoFieldExchange 레코드셋,DB간 데이터 교환지원. CDaoException DB 조작시 예외처리 CDaoQueryD.. 더보기
ODBC관련 데이터 베이스 클래스 Visual C++에서 다루기 쉬운 데이터 베이스 클래스 CDatabase 데이터 소스를 가지며, 데이터소스에 대한 조작을 지원 CRecordset 선택된 레코드를 포함할 레코드셋을 가짐. 선택된 레코드의 추가, 수정, 삭제, 필터링, 소트지원 CRecordView 레코드셋의 뷰제공. DDX메커니즘으로 레코드뷰와 레코드 셋의 데이터교환. 레코드뷰의 폼뷰같이 다이얼로그기반.레코드간의 이동, 갱신지원 CFieldExchange 레코드셋과 데이터베이스간의 데이터교환. 레코드셋객체의 파라미터,데이터 소스대응 컬럼 포함. CDBException 데이터 엑세스예외처리. CDBVariant Variant 타입표현. 타입에 상관없다. CRecordset함수인 GetFieldValue, GetBookmark, SetBo.. 더보기
.NET 어플리케이션의 아키텍처 구조 .NET 어플리케이션의 아키텍처 구조 http://wiz.pe.kr/85 더보기
리치 에디트 컨트롤(CRichEditCtrl) 2007/10/28 - [프로그래밍/VC/VC.NET/Cs] - 공통 컨트롤 종류 2007/10/28 - [프로그래밍/VC/VC.NET/Cs] - 리스트 박스 이용하기 리치 에디트 컨트롤은 여러개의 라인문자열을 손수 처리 할 수 있다. RTF를 지원하고, 일반 에디트 컨트롤과 달리 여러 기능이 추가 되었다. 문단이 있어서 폰트등의 속성을 제어 할수 있다. CHARFORMAT 구조체 맴버 bCharSet logfont 구조체, ifCharSet멤버변수에 사용할 수 있는 아무 값이나 사용가능 bPichAndFamily 폰트페밀리 피치를 지정 cbSize CHARFORMAT 구조체 크기 지정 crTEXTColor 문자열 텍스트 색상 지정 dwEffects 출력 효과 지정 dwMask 구조체 맴버가 유효값을 가.. 더보기
공통 컨트롤 종류 2007/10/28 - [프로그래밍/VC/VC.NET/Cs] - 리치 에디트 컨트롤(CRichEditCtrl) 2007/10/28 - [프로그래밍/VC/VC.NET/Cs] - 리스트 박스 이용하기 애니메이션 컨트롤 - 윈도우 동영상 파일 AVI 을 재생하는 컨트롤. 헤더 컨트롤 - 리스트 컨트롤 상단에 제목을 붙이는데 이용. 프로그레스 컨트롤 - 윈도우에서 파일복사/삭제시 진행상황. 트리 컨트롤 - 계층구조를 갖는 항목을 보여주는 컨트롤. 리스트 컨트롤 - 아이콘,목록,보고서형태의 아이템이 나타남. 이미지 리스트 컨트롤 - 이미지 전문관리 컨트롤. 슬라이더 컨트롤 - 트랙바. 불연속값, 범위의 값을 입력받을 경우. 툴바 컨트롤 - 여러개의 버튼을 묶어 관리. 상태바 컨트롤 - 시간,날짜등의 참고정보 툴팁.. 더보기
모달(Modal) / 모달리스(Modeless) 다이얼로그 박스 모달(Modal) 다이얼로그 박스. 이놈은 다일로그 박스의 다른 부분(바깥부분)을 클릭할때 삑삑~~ 거리면서 다른 곳을 손 못되게 거리는 넘이 모달 다이얼로그 박스입니다. 이넘은 다이얼로그 박스가 종료되기 전까지 다은 윈도우를 선택할수 없게 디자인 되어있습니다. 배째라 이거죵.. ㅋㅋ 모달리스(Modeless) 다이얼로그 박스. 요놈은 버튼을 누르지 않아도 다른 윈도우를 선택해서 이용할 수 있는 경우. 여기에 속합니다. 다이얼로그 박스의 모달 / 모달리스 의 형태는 실행시에 결정되는 겁니다. 모달리스 다이얼로그 박스는 DoModal() 함수대신 Create() 함수 이용한다. . 모달 모달리스 다이얼로그 박스 생성 CDialog::DoModal() CDialog::Create() 다이얼로그 박스 소멸 C.. 더보기
리스트 박스 이용하기 간단한 리스트 박스를 이용해서 리스트 박스 컨트롤 을 살펴보자. 생성컨트롤. 리스트 박스 ID : IDC_LIST1 에디트 ID : IDC_NAME 버튼 ID : IDC_ADD ID : IDC_REMOVE ADD버튼에 다음과 같은 함수를 코딩한다. void CListBoxDlg::OnBnClickedAdd() { CString strName; CListBox *pListBox = (CListBox*)GetDlgItem(IDC_LIST1); GetDlgItemText(IDC_NAME,strName); if(!strName.IsEmpty()) { pListBox->AddString(strName); SetDlgItemText(IDC_NAME,L""); } } REMOVE버튼 함수 void CListBoxDl.. 더보기
초간단 다이얼로그박스 생성하기 VS2005에서 작성한 글입니다. 먼저 리소스에서 우측버트을 눌러 추가-> 리소스 를 클릭한다. 리소스 추가에서 다이얼로그(Dialog)를 선택하고 새로만들기를 클릭 리소스에 보면 다이얼로그박스가 나와있다... 다이얼로그를 선택하고 속석을 클릭하게되면, 속성탭이 나온다. 더보기
Ellipse 그리기. 랜덤 함수를 써서 윈도우에 다양한 타원.. 간단하게 CDC::Ellipse() 함수를 이용해서 윈도우에 랜덤한 타원을 출력시키는 프로그램. CBrush와 CPen으로 브러시와 펜을 생성및 초기화 하고 SelectObject 함수로 DC에 선택한다. #include class CEllipseApp: public CWinApp { public: virtual BOOL InitInstance(); }; CEllipseApp theApp; class CMainWnd : public CFrameWnd { public: CMainWnd(); ~CMainWnd(); afx_msg void OnTimer(UINT nIDEvent); DECLARE_MESSAGE_MAP(); }; void CMainWnd::OnTimer(UINT nIDEVENT) { CClien.. 더보기
윈도우즈 그래픽 출력함수 윈도우 그래픽 출력함수들은 모두 CDC멤버함수로 되어있다. GDI객체를 프로그래머가 만들어서 사용할수도 있다. 일반적으로 내부에 있는 GDI객체를 Stock object라 한다. 이는 CDC::SelectStockObject함수를 이용해서 사용할 수 있다. 이것도 마찬가지로 이전의 DC에 설정된 GDI오브젝트를 리턴하게 된다. 작업을 끝낸후 다시 복구해야 한다. 픽셀 관련함수 CDC::SetPixel() CDC::GetPixel() 선그리기 함수 CDC::MoveTo() CDC::LineTo() CDC::PolyLine() CDC::Arc() CDC::PolyBezire() 타원과 다각형 그리기 함수 CDC::Rectangle() CDC::RoundRect() CDC::Ellipse() CDC::Chor.. 더보기
윈도우 그래픽 프로그래밍 OnDraw (환경 : VS 2005에서 실행하였다.) 간단하게 프로젝트에서 Line 이란 프로젝트를 생성한다. single document로 생성. 그중 view 클래스에서 OnDraw함수를 찾는다. CLineView::OnDraw() . 이넘이 실질적으로 윈도우에 그림을 뿌려준다... code ---------------------------------------------------------------- void CLineView::OnDraw(CDC* pDC) { CLineDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다. CPen penRed(PS_SOLID,0,RGB(2.. 더보기