Devlopment

    [VC++] 쓰레드

    쓰레드 선언 .h public: static UINT ThreadName(void *lParam); 쓰레드 정의 .cpp UINT ClassName::ThreadName(void *lParam) { // return 0; } 실행 AfxBeginThread(ThreadName, this); 쓰레드 선언 규칙 리턴값 : UINT 매개 변수 : void* lParam

    VC++ 변수 표기법

    헝가리언 표기법(Hungarian Notation) 변수들을 정의할 때 데이터형을 알아보기 쉽도록 접두어를 붙여 표기하는 것. 접두사 의미 접두사 의미 a Array lp Long Pointer ai Integer Array lpfn Function Pointer b Boolean lpsz String Pointer by Unsigned Char(Byte) m Data member of a class c Char n Short or Int cb Count of bytes np Near Pointer cr Color Reference Value p Pointer cx, cy Short(count of x, y length) psz String Pointer dw Unsigned long(dword) s S..

    VC++ Data Type

    BOOL 논리 데이터 형(TRUE또는 FALSE) BYTE 8 비트 unsigned형 정수 WORD 16 비트 unsigned형 정수 UINT 32 비트 unsigned형 정수 DWORD 32 비트 unsigned형 정수 or 세그먼트:오프셋 주소 LONG 32 비트 signed형 정수 LPVOID 32비트 타입 지정이 없는 포인터 COLORREF 색상(color)을 표현하는 32비트 데이터 형 BSTR 32비트 문자형 포인터 LPSTR 32비트 문자열 포인터 LPCSTR 32비트 문자열 상수 포인터 WNDPROC 윈도우 함수에 대한 32비트 포인터 WPARAM, LPARAM 윈도우 함수 또는 Callback 함수의 인수로 넘겨주기 위한 32 비트 데이터 형 LRESULT 윈도우 함수 또는 Callbac..

    VC++ 컴파일/모드

    C/C++ Compiler Visual C++ 컴파일러는 C, C++ 구 소스 코드 다 컴파일 가능 Resource Compiler RC파일을 컴파일하여 링커에 필요한 .res 파일을 생성 *.rc : 텍스트 파일 * .res : 이진파일 Linker 컴파일러로 만든.obj 파일과 .res 파일을 읽고, LIB 파일과 결합하여, DLL과 연결하여 EXE 파일을 생성 Debugger C에서와 같이 로그를 출력하여 확인하거나 중단점(BreakPoint)을 설정해서 해당 부분에 멈추거나, 한 문장씩 코드를 실행해서 값들을 볼 수 있음 Debug 모드 프로그램 코드를 생성(Build 과정에서 디버깅 정보가 실행 파일에 포함) 실행 파일에 디버깅 정보가 포함되기 때문에 실행 파일이 원래보다 크게 생성됨 Relea..

    [VC++] MessageBox

    MessageBox(내용, 타이틀, 버튼형태); 반환 값 : int 버튼 형태 : MB_YESNO 반환값 : IDYES, IDNO MB_OK 반환값 : IDOK 코딩 형태 : ex1) int nButtonValue = MessageBox(_T("Description"), _T("Title"), MB_YESNO); if(nButtonValue == IDYES) { AfxMessageBox(_T("Y")); } else if(nButtonValue == IDNO) { AfxMessageBox(_T("N")); } ex2) if(MessageBox(_T("Description"), _T("Title"), MB_YESNO) == IDOK) { AfxMessageBox(_T("OK")); }

    [VC++] 프로세스간 통신(IPC)

    윈도우 메시지 처리 방식. SendMessage() 함수 원형 : LRESULT PostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); 메시지 큐를 안 거치고 응용 프로그램에 직접 메시지를 전달하며 메시지가 처리된 후에 반환되어지기 때문에 처리하는 동안 차단상태가 된다. PostMessage() 함수 원형 : LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); 전달 메시지를 해당 응용프로그램의 메시지 큐에 넣고 바로 반환한다. -받는 부분 1. 사용자 메시지 정의 위치 : .h #define WM_MSG_NAME WM_USER+1 afx_msg LRESULT Receiv..

    [VC++] 다중문서

    1. CDocument, CView를 기본 클래스로 도큐먼트, 뷰 클래스 생성 2. View.h #include "Doc클래스명.h" ... Doc클래스 *GetDocument(); View.cpp Doc크래스 *View클래스::GetDocument() { return (Doc클래스 *)m_pDocument; } void View클래스명::OnDraw(CDC* pDC) { Doc클래스명 *pDoc = GetDocument(); ASSERT_VALID(pDoc); } App.cpp #include "Doc클래스명" #include "View클래스명" ... BOOL App::InitInstance() { ... pDocTemplate = new CMultiDocTemplate(IDR_MDIPaintTYPE..

    [VC++] 객체 간 통신

    응용 프로그램 CSDIApp *pApp = (CSDIApp *)AfxGetApp(); 윈도우 메인 프레임(메뉴, 상태표시줄, 도구모음) CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); 뷰 CSDIView *pView = (CSDIView *)pFrame->GetActiveView(); 도큐먼트 CSDIDoc *pDoc = (CSDIDoc *)pFrame->GetActiveDocument();

    [VC++] 모달/모덜리스 대화상자

    모달 대화상자 대화 상자를 닫기 전까지 부모 윈도우를 전환할 수 없음 클래스 CModal : CDialog View 이벤트 함수 Modal dlg if(dlg.DoModal() == IDOK) { // 창 닫힐 때 처리 } -------------------------------------------------- 모달리스 대화상자 대화 상자를 닫지 않고도 부모 윈도우를 전환할 수 있음 클래스 CModaless : CDialog View 헤더 CModaless dlg; View 이벤트 함수 if(dlg.GetSafeHwnd() == NULL) dlg.Create(IDD_TEST); dlg.ShowWindow(SW_SHOW);

    Probus에서 기존 서비스 변경시 주의사항

    업무중에 Probus를 통하여 연동작업을 하는 도중에 기존에 deploy된 작업들의 내용을 수정해서 deploy를 다시 했더니 제대로 동작하지 않는 에러가 발생하였다. 서비스를 완전 새로 만들면서 삽질을 하다가 알고 보니 기존에 이름이 겹치지 않는 새로운 서비스는 잘 되지만, 기존 서비스들을 수정할 경우에는 컨테이너를 내렸다가 다시 올려야만 했다. 다른 자바 웹 컨테이너에서도 가끔 발생한 문제이지만 기존 서비스를 수정할 경우에는 기존에 돌아가던 서비스가 제대로 undeploy되지 않아 충돌이 되는 듯하다.