Programming (36) 썸네일형 리스트형 CAsyncSocket Connect() 문제점 이 글은 추후에 참고하기위해 작성되었다. 정확하지 않은 내용이 있을 수 있으니 그저 참고용도로만 보길 바란다. winsock 또는 CSocket을 이용하여 socket통신을 개발하는 경우에는 connect() 함수의 반환 값에 따라 서버와 클라이언트가 정상적으로 연결되었는지 안되었는지를 알 수 있다. 하지만 CAsyncSocket을 이용한 경우 connect()함수의 반환값에 따라 정상적으로 처리가 되었는지 안되었는지 알 수 없는 문제가 있다. 이 때에는 GetLastError() 함수를 통해 에러값을 확인하고 OnConnect()를 재정의 함으로써 해결할 수 있다는 글이 있지만 실제로 시도해본 결과 정상 연결을 확인하는 것에는 무리가 있음을 확인하였다. 필자가 확인 못한 내용이 있을 수도 있다. 필자는.. Progress Bar Color Progress bar 색상은 사용하는 window theme에 따라 변경 방법이 다르다. 현재 확인된 것은 2가지이다. 1. windows classic 2. Aero windows classic의 경우는 2가지 방법으로 색상 변경이 가능하다. 1. SendMessage(PBM_SETBARCOLOR, 0, RGB(R, G, B)) 2. SetBarColor(RGB(R, G, B)) Aero의 경우는 상태 변경을 통해 색상변경이 가능하다. 총 3가지의 상태가 존재한다. 1. normal : 초록 2. paused : 노랑 3. error : 빨강 상태 변경 함수는 아래와 같다. SetState(int iState) 하지만 paused, error상태의 경우 progress bar 컨트롤이 정상 동작 되지.. Skin MFC 작업을 하다보면 Dialog 혹은 Control의 디자인을 변경할 일이 있다. 크게 3가지 방법이 있다고 한다. 1. 직접 제작 2. 상용 라이브러 사용 3. manifest 파일 추가 및 변경 본문은 2번째 방법에 대한 글이다. 우선 codejock은 상용 라이브러리로써 무료버전은 30일을 지원한다. codejock는 MFC의 다양한 컴포넌트를 지원한다. 필자는 MFC에 Skin을 입히기 위해 Research를 진행했었다. codejock에서 지원하는 Skin Theme는 7가지이다. Codejock Skin, Office 2007 Style, Office 2010 Style, Windows 10, Windows Vista Style, Windows XP Luna Style, Windows XP.. 배열 크기 확인 최근에 배열 크기에 관한 issue가 있어서 정리한다. 프로그램을 실행시키면 운영체제는 프로그램을 위해 메모리공간을 할당한다. 메모리공간은 아래 그림과 같이 Data, Heap, Stack으로 나뉘며 각 영역에는 목적에 맞는 변수들이 위치하게 된다. Data, Stack영역에는 sizeof()함수를 이용하여 크기를 쉽게 확인할 수 있다. sizeof 함수의 원형은 아래와 같다. 하지만 Heap영역에서는 동적으로 크기가 결정되므로 sizeof()함수로 크기를 확인 할 수 없다. windows에서는 _msize() 함수를 이용한다. 함수 원형은 아래와 같다. Linux에서는 malloc_usable_size()함수를 이용한다. 함수 원형은 아래와 같다. 아래 그림은 확인용 예제이다. Example Resul.. OnNcPaint( ) vs OnPaint( ) OnNcPaint는 비 작업 영역에 대한 처리를 하는데 사용된다. 비 작업 영역이란 프로그래머에게 프로그래밍 대상이되지 않는 부분으로 운영체제에서 관리되도록 되어 있는 부분을 뜻한다. 위 그림에서 파란색 점선 밖에 영역을 의미한다. OnPaint는 작업 영역에 대한 처리를 하는데 사용된다. 작업 영역이란 프로그래머에게 프로그래밍 대상이 되는 부분을 뜻한다. 위 그림에서 파란색 점석 안에 영역을 의미한다. 모든 컨트롤들은 작업 영역내에 위치 하므로 OnPaint를 대부분 사용하지만 Menu Bar, Title Bar, Border와 같은 부분은 OnNcPaint를 이용해야한다. strftime() 시간이나 날짜를 문자열로 표현하는 함수를 소개하고자한다. C : #include C++ : #include Function Name : strftime 3번째 인자인 Format은 아래와 같다. 마지막으로 사용 예시이다. 참고 자료 1 : https://modoocode.com/122 C 언어 레퍼런스 - strftime 함수 modoocode.com Date 갱신 Error 때때로 우분투의 시간이 동기화 되지 않아 발생하는 컴피일 Error가 있다. Warning : File 'XXX' has modification time XXX s in the future 메시지에서 알 수 있다시피 파일의 수정 시간과 현재 시스템의 시간이 동기화 되지 않아 발생하는 것을 알 수 있다. 또한 해결방법은 시스템 시간을 현재 시간으로 설정해주면 된다는 것도 알 수 있다. date -s "YYYY-MM-DD HH:MM" 일반적으로 시스템이 부팅될 때 메인 보드 CMOS Clock에 의해 시스템 시간이 결정되는 것으로 알고 있지만 왜 시스템 시간이 현재 시간과 동기화가 되지 않는지 확인해 볼 필요가 있어 정리한다. 2가지 정도의 원인이 있을 것으로 생각된다. 1. 아직 ntpdate에 의해 nt.. C2280 다시 해당 Error를 발생시키지 않기 위해 정리를 진행한다. C2280의 Error message는 삭제된 함수를 참조하려고 합니다 이다. Microsoft Docs에 따르면 해당 Error는 6가지 상황에 발생을 한다. 1. 명시적으로 삭제 된 함수 2. 초기화 되지 않은 데이터 멤버 3. 참조 및 const 데이터 멤버 4. 이동 가능한 삭제 암시적 복사 5. Variant 및 volatile 멤버 6. 간접 기본 멤버가 삭제됨 1,4번에 접촉되어 Error message가 발생하였으며 멤버 변수 중 하나가 Class생성 시 초기화를 진행하지 않고 멤버 함수 중에 초기화를 진행하였기에 문제가 발생하였다. 참고 자료 1 : https://docs.microsoft.com/ko-kr/cpp/error-.. 이전 1 2 3 4 5 다음