C++ 빌더로 원 그리기, 복사하기 bitmap CopyRect 출처 : 스택오버플로 bitmap c++ builder copy GUI 캔버스 Canvas에 원이 그려진 bmp를 불러와 위치를 지정하는 소스가 있고요. 여기서 그려진 원을 복사하는 소스입니다. 출처인 스택오버플로 소스 코드를 발췌했습니다. 【1. 원 그리기】 TBitmap 객체를 생성하고 비트맵의 캔버스에 원을 그립니다. 이 객체는 배경 백그라운드 Canvas로 불러오는 소스입니다. 12345678910111213141516Graphics::TBitmap* bmp; void __fastcall TForm1::FormCreate(TObject* Sender){ bmp = new Graphics::TBitmap(); bmp->Width = 3..
MFC CPtrList, CStringList 클래스 배열 사용 예제 CStringList [New, Delete] 123CStringList* pA1 = new CStringList;delete( pA1 );CStringList CR1( 5 );cs [GetHeadPosition] 12POSITION PS1;PS1 = CR1.GetHeadPosition( );cs [AddHead] 12CString S10("AAA");PS1 = CR1.AddHead( (LPCTSTR)S10 );cs [Insert, etc...] 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455S10 = ..
SDL2 설치 및 실행 에러 2가지 (우분투 Ubuntu 14.04) 1. SDL2 에러 "cannot open" 에러 메시지 : libSDL2-2.0.so.0 cannot open 만약 위처럼 에러 메시지가 발생하며 실행되지 않는다면 /usr/lib/ 밑의 SDL 파일들을 복사해서 이동하세요. 1cp /usr/local/lib/libSDL* /usr/lib/arm-linux-gnueabihf/cs 2. SDL2 에러 "unsupported image format" 에러 메시지 : unsupported image format 위 에러가 발생할 경우엔 아래 사이트를 참조해 봅니다. 참조 사이트 : SDL2_image complains about unsupported image format [링크] 핵심만 ..
C# Json 파싱 예제 - List에 클래스 객체 저장 (json to list object) 기본적으로 C# Json 파싱은 단일 자료형 기반으로 운용하는 경우가 많습니다. 그래도 사용하다 보면 클래스 객체를 기준으로 Json에 데이터를 써야 할 경우도 생기죠. 이럴 때 매번 클래스 객체를 생성하여 반복문 등으로 삽입하기엔 귀찮은 점이 많습니다. 그래서 아래와 같이 클래스 객체를 List에 담아 한 번에 Json으로 생성하는 것이 조금 더 수월합니다. 우선, Json에 추가할 public class를 하나 선언합니다. 123456public class data{ public int Id { get; set; } public int SSN { get; set; } public string Message..
C++ string Split 함수, 문자열 자르기 또는 나누기 출처 : The most elegant way to iterate the words of a string [closed] C++은 왜 Split 기본 함수가 없을까요? 이거 참 불만이네요. 분명히 문자열 자르기 나누기 함수를 원하는 개발자 많을 텐데요. C#은 문자열 변수 뒤에 .Split() 함수 호출할 수 있습니다. 아니면 String.Split으로 문자열 자르기 할 수 있어요. 근데 C++에는 왜 없을까요? 없으니 잘 꾸며진 소스 가져다 써야겠네요. 출처는 바로 위 스택오버플로우입니다. 아래 인용한 소스는 두 번째 답변으로 첫 번째 답변보단 저는 두 번째가 낫네요. 123456789101112131415161718192021222324..
DevExpress "Drag a column header here to group by that column" 삭제 (GridControl) 데브익스프레스의 GridControl을 사용하면 아래처럼 기본 텍스트가 화면에 보입니다. 이걸 없애려면 ShowGroupPanel 값을 False로 변경해야 합니다. 우선, 비주얼 스튜디오 디자인 화면에서 그리드 컨트롤을 클릭합니다. 그리고 오른쪽 위에 있는 작은 화살표를 눌러 GridControl 작업 창의 띄웁니다. 이어서 GridControl 작업 창의 가운데에 있는 Run Designer를 클릭합니다. 그리드컨트롤 디자이너 창이 뜨면 아래 순서대로 메뉴를 클릭합니다. Main Views - Views GridView1 - Options ShowGroupPa..
[토탈커맨더 단축키 7개] 유용한 Ctrl Total Commander 사용법 제가 주로 사용하는 유용한 단축키 7개 소개합니다. 단축키 1. Ctrl + T 탭추가 토탈커맨더를 탭 2개로 사용하는 분들도 많지만, 좌우 패널에 탭을 추가하여 더 편리하게 사용할 수 있습니다. 탭 2개로 한정하지 않고 여러개로 늘려 디렉토리 링크를 계속 누르며 화면 전환하는 번거로움을 피할 수 있습니다. 위 그림은 왼쪽 패널에만 탭을 4개로 늘린 케이스입니다. 단축키 2. Ctrl + B 하위 폴더 내용까지 모두 보기 폴더는 서브 폴더와 해당 폴더의 파일로 이뤄집니다. 토탈커맨더로 상위 폴더에서 하위 폴더 파일까지 한꺼번에 보고 싶다면 컨트롤 키를 누른채 B를 누릅니다. 상하위 폴더의 파일을 한번에 확인할 수 있습니다. 위..
C# DataTable 행 추가 (foreach, DataRow 응용) DataTable 사용할 때 간단히 응용할 수 있는 팁입니다. 12345678910111213141516171819var dt = new DataTable(); // 열은 이미 추가되었다 치고 string[] lines = System.IO.File.ReadAllLines(@"C:\test.txt"); foreach (string line in lines){ var cols = line.Split(','); DataRow dr = dt.NewRow(); for (int cIndex = 0; cIndex
[토탈 커맨더 대체] 더블 커맨더 사용 설정 - 폰트 글꼴 많은 사람들이 사용하던 토탈 커맨더가 수년 전부터 유료화되었습니다. 그래서 많은 분들이 대체할 프로그램을 찾다가 토탈 커맨더 Total Commander를 선택하십니다. 앞으로 더블 커맨더와 관련된 포스팅을 많이 할 예정인데, 우선은 폰트 글꼴을 바꾸는 방법을 알아보도록 하겠습니다. 참고로 저는 Bitstream Vera Sans Mono를 애용합니다. 1. 더블 커맨더 환경설정 폰트 글꼴을 바꾸기 위해 상단 메뉴에서 환경설정 - 설정을 선택합니다. 이어서 왼쪽 메뉴 트리에서 글꼴을 선택합니다. 그리고 주 글꼴(F) 아래 ...을 클릭하여 원하는 폰트를 선택합니다. 저는 Bitstream Vera Sans Mono를 선택했습니다. 아래 그림을 통..
비주얼스튜디오 2005 브레이크 포인트 안걸릴때, 디버깅 안될때 1. 도구 - 옵션 - 서명없는 UTF-8 인코딩 자동 검색 - 켜기 (ON) VisualStudio를 다루다 보면 이상하게 Break Point가 안 걸려 디버깅을 제대로 못할 때가 있습니다. 저는 여러 방법을 시도해 봤는데, 문자셋 불일치를 교정하여 디버깅 문제를 해결했습니다. (ANSI UTF8) 기본적으로 "서명없는 UTF-8 인코딩 자동 검색" 옵션은 꺼져있습니다. 단순히 이 옵션을 켜줌으로써 비주얼스튜디오 브레이크 포인트 안걸림 문제를 해결할 수 있습니다. 위의 그림처럼 서명 없는 UTF-8 인코딩 자동 검색을 활성화합니다. 도구 - 옵션 - 텍스트 편집기 - 일반 - 서명 없는 UTF-8 인코딩 자동 검색 선택(활성화) 또는, ..
[임베디드 리눅스] 시리얼 통신 안 될 때 확인 방법, stty speed 가끔... 잘되던 통신이 안될 때가 있다. USB 인식 실패 문제가 생기는 거다. 소스를 아무리 고쳐도 안 되거나, 케이블이나 주변의 문제는 아닌 거 같다. 그럴 경우엔 stty 명령어를 이용해 속도를 지정해 다시 시도해 보자. 먼저, 아래 그림처럼 ttyUSBn이 올라와 있는지 확인한다. 1stty -a
Qt QList 배열 깊은 복사 방법 (Qt5, C++ 11 적용 가능) 출처 : How to create a deep copy of a QList (Qt 4.8) [링크] Qt의 복사 매커니즘은 기본적으로 암시적인 Deep Copy(깊은 복사)로 작동합니다. QList a;a.append(1);a.append(2);cs 두 개의 값이 복사된 QList를 확인할 수 있습니다. QList b = a;// a = 1, 2// b = 1, 2cs QList a와 b는 똑같습니다. b는 a의 데이터를 공유하며, 복사하지 않기에 작업 속도는 매우 빠릅니다. b.append(3);// a = 1, 2// b = 1, 2, 3cs 위와 의미는 똑같지만 다른 예제는 아래와 같습니다. QList a;a