본문 바로가기

전체 글319

QT 자료 검색중 찾은 블로그 1. http://kernelcoder.wordpress.com/ Ruler 개발을 할 때 자료를 찾다가 발견했다. 파일 탐색기 개발에도 도움이 될 것 같다. 2014. 11. 11.
QT 파일 읽고 쓰기 1. Read & Write QT에서 파일을 읽고 쓰기 위해서는 QFile과 QDataStream 클래스를 이용해서 처리할 수 있다. Text 같은 경우에는 QTextStream 이라는 클래스를 이용하면 편하다. 참고 자료는 역시 qt-project.org에서 제공하는 document를 보면 된다. http://qt-project.org/doc/qt-5/qfile.html 2. 주의 사항 : QDateStream을 이용해서 binary data를 읽을 때 주의해야 할 부분이 있다. QT는 default로 BigEndian을 사용한다. 그러나 Windows는 LittleEndian을 사용한다. 그러기 때문에 Windows에서 파일을 읽을 때에는 반듯이 setByteOrder() 함수 세팅을 해줘야 한다. .. 2014. 9. 24.
QT 참고 도서 및 SDK 설치 파일 1. QT 개발 참고도서 : C++ GUI Programming with Qt 4, Second Edition by Jasmin Blanchette; Mark Summerfield 위의 책만한 것이 없는 것 같다. 국내 여러 도서가 있지만 위의 책을 검색하면 pdf를 구할 수 있는데 그것을 읽어 보면 개발을 시작하는데 큰 어려움이 없을 것으로 판단된다. 국내 번역판도 있으니 영어가 어렵다면 번역본을 구해 보는 것도 좋다. 'Qt 4를 이용한 C++ GUI 프로그래밍' 2. 설치 파일 : http://qt-project.org/ 에서 설치 파일을 다운받을 수 있다. 일반적으로 MSVS에 Add-in를 설치해서 사용하는 것이 일반적일 것 같다. 현재(14년 9월) 최신 버전은 5.3.2이고 32bit와 64.. 2014. 9. 24.
IME 선택된 언어 확인하기 정말 고생해서 찾았다. 구글링을 해서 찾지 못했는데 역시 MSDN 예제에서 힌트를 얻었다. Message중에 "WM_INPUTLANGCHANGE"가 있다. 그런데 App에서 Message Hooking을 해봤는데 IME 변경을 할 때 들어가지 않는다. 윈도우에서 현재 화면에 있는 활성화 된 윈도우에 메시지를 보내지 않는 걸까? 결국 글 입력할 때마다 IME를 확인하도록 만들었다. // Define language ID #define LID_TRADITIONAL_CHINESE 0x0404 #define LID_JAPANESE 0x0411 #define LID_KOREAN 0x0412 #define LID_SIMPLIFIED_CHINESE 0x0804 한글은 조합을 해서 화면에 표시가 되기 때문에 "WM_I.. 2014. 9. 5.
floating point overflow 검사 참고: http://www.cplusplusdevelop.com/47_23295818/ DBL_MAX, DBL_MIN은 C++은 에 define 되어 있고 C는 에 define 되어 있다. 이것을 이용하면 된다. C++의 에 정의된 std::numeric_limits를 이용해도 된다. #include #include #include int main() { std::cout 2014. 8. 28.
GDI+ DrawString, Font 오류 문제 여러가지로 테스트를 진행했지만 GDI+ DrawString을 이용해서 특정 폰트를 가지고 출력할 때 오류가 발생한다.원인은 아직까지 확인하지 못했다. 내가 가지고 있는 폰트중에 "HY견고딕" 이라는 폰트가 있다.폰트 정보는 아래와 같다. 파일 형식: 트루타입 글꼴 파일(.TTF) 저작권: HanYang I&C Co., Ltd OpenType: 레이아웃, TrueType 윤곽선 한글폰트 버전: 3.10 폰트를 확인하면 당연히 ?도 포함되어 있다. 그러나 GDI+로 화면에 출력을 하면 ?가 표시되지 않는다.어떤 폰트를 가지고 출력을 할 때에는 모든 글자가 출력되지 않는 것도 있었다. 당연히 GDI방식과 Direct2D 방식인 DirectWrite API로 처리를 하면 정상적으로 화면에 출력이 된다.원인이 밝.. 2014. 8. 14.
Beeper 설정(비프음 설정) 개발을 하다가 메시지 박스나 포커스 없는 곳을 클릭할 때 비프음이 발생합니다.신경이 쓰이기도 하죠~ 이것을 설정할 수 있는 API가 있습니다. bool m_IsSystemBeeperOn = false; //현재 System의 Beeper 설정 불러오기 SystemParametersInfo(SPI_GETBEEP, 0, PVOID(&m_IsSystemBeeperOn), 0);// Beeper가 On인 경우 Off if (m_IsSystemBeeperOn == true) SystemParametersInfo(SPI_SETBEEP, 0, NULL, SPIF_SENDWININICHANGE); // 기존 System의 Beeper 설정으로 환원 SystemParametersInfo(SPI_SETBEEP, stati.. 2014. 8. 14.
CWnd::OnNotify 통지메시지를 처리할 때 사용하는 가상함수 통지메시지(Notify message)는 WM_NOTIFY 윈도우 메시지 파라미터로 전달되는 어떤 코드이며, SendMessage()함수를 이용해 전달되므로 메시지 큐를 거치지 않고 핸들러러 함수에 직접 호출한 결과를 가져옵니다.이런 통지메시지가 필요한 이유는 컨트롤 윈도우에 대해 사용자가 발생시킨 각종 이벤트를 부모 윈도우의 코드에서 해결하기 위해서입니다. 만일 통지메시지가 없다면 컨트롤 윈도우의 파생 클래스를 매번 만들어서 사용해야 합니다.새로운 컨트롤 윈도우를 개발하고자 한다면 통지 메시지에 대해서도 설계해야 합니다. 마치 클래스의 가상 함수를 설계하는 것과 비슷하다고 할 수 있습니다.(출처: 프리렉 / MFC 윈도우 프로그래밍 406, 407 page) The framework calls this.. 2014. 8. 8.
[x64] [ilink64 Error] Fatal: Unable to open file 'BDERTL.A' LeadTools V18과 C++ Builder XE6를 이용해서 64bit 빌드 할 때 'BDERTL.A'를 열수 없다는 에러 메세지가 나타난다.Compiler 폴더를 검색해 봐도 그런 파일은 존재 하지 않는데 구글을 검색한 결과 아래와 같은 페이지를 발견했다.http://qc.embarcadero.com/wc/qcmain.aspx?d=114447해결책은 XE6에서 비어있는 BDERTL.dll을 제작한 후에 Lib폴더에 64bit로 빌드후 생성 된 BDERTL.dll과 BDERTL.a 파일을 넣고 빌드를 하면 문제 없이 성공한다.위의 링크에 써 있는 내용은 아래와 같다.Still in XE4 Update 1 ....Work around: Copy any .a lib to BDERTL.a or creat.. 2014. 7. 15.