본문 바로가기

전체 글99

CDockablePane에 Dialog 등록 CDockablePane에 Dialog 등록 CDockablePanel에 Dialog를 등록하여 사용할경우 컨트롤러를 직접 생성하는것보다 편리하다. 처리해야할 부분 기본적으로 CDockablePanel를 상속받아 Panel을 만들고 OnCreate 에서 다이얼로그를 생성하여 등록 하면되지만 부가적으로 해야할 처리들이 몇가지 존재한다. 1. 페널의 사이즈가 변경될시 다이얼로그의 사이즈도 변경해 줘야 한다.2. 페널이 포커스되면 다이얼로그에 포커스를 설정해 줘야 한다.3. 페널위 다이얼로그에서 마우스 오른쪽 클릭시에도 DockablePane Context menu (도킹관련 팝업메뉴)가 떠버려 다이얼로그를 가리게 되며 다이얼로그 위에서 마우스 왼쪽 클릭을 해도 사라지지 않는 문제점이 발생한다 이를 위해 Co.. 2013. 3. 15.
[MFC] OnCreate와 OnInitialUpdate의 차이점 OnCreate() 함수는 WM_CREATE 메시지에 대한 핸들러 함수입니다.즉, 어떤 윈도우 클래스가 윈도우로써 생성이 되면,시스템에 그 윈도우에게 "너 이제 윈도우가 됐어" 라는 의므로 WM_CREATE를 날려줍니다.그러면 OnCreate()가 실행되면서 윈도우가 되면 할 수 있는 것들을 하게 되죠. 반면 OnInitialUpdate() 함수는 가상함수 입니다. 즉, 메시지에 대한 처리 함수가 아니라는 것 입니다. View클래스의 내부로 들어가보면, OnInitialUpdate() 함수는 View가 윈도우로 생성된 후Document에 의해 호출 되게 됩니다. SDI나 MDI같은 프레임워크의 경우는 Document, View, Frame이 한꺼번에 생성되고 연관되어 동작하기 때문에, 서로가 서로의 상태.. 2013. 3. 15.
MFC 클래스간 통신 MFC 클래스간 통신 SDI 형태 1. MainFrame 얻기 - CMainFrame *pFrame = (CmainFrame *) AfxGetMainWnd(); 2. App 포인터 얻기 - CTestApp *pApp = (CtestApp *) AfxGetApp(); 3. Document 포인터 얻기 - CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); CTestDoc *pDoc = (CTestDoc *)pFrame->GetActiveDocument(); - CTestDoc *pDoc = ((CMainFrame *)AfxGetMainWnd())->GetActiveDocument(); 4. View 포인터 얻기 - CMainFrame *pFrame = (CMainF.. 2013. 3. 15.
MMF(Memory Mapped File) 안녕하세요 mmf (Memory mapped file) 에대해서 알고싶읍니다 어디강좌같은것이 있으면 부탁드립니다 mmf를이용해서 파일을 열고 파일을 읽어서 가공하고 닫고 하는작업을 해야됩니다 저는 텍스트가 포함된 바이너리파일을 열고 텍스트단위로 읽어서 줄바꿈기준으로 줄단위로 내용을 추출해야됩니다 방법좀 부탁드립니다 보니까 MapViewOfFile이란함수가있던데여, 이함수의 리턴값이 뭔가여사용법 좀 알았으면 합니다 즐거운하루되세요 [답변-즐거운악몽님이 답변하신 내용입니다.] MMF(Memory Mapped File)이란 파일과 메모리 객체를 연결한다는 말 입니다...ㅡㅡ; 정말입니다...영문 그대로 생각하시면 됩니다...^^ 좀 더 풀어서 이야기 하면 파일과 메모리 객체를 연결 시킨 후 그 메모리 객체에 .. 2013. 3. 14.
MFC 교육 관련 사이트 일단 이런곳이 있네요?ㅎㅎㅎㅎㅎ시간날대마다 들어봐야겠습니다.http://msdn.microsoft.com/ko-KR/visualc/bb496952.aspx#mfcclasses 2013. 3. 8.
MFC SendMessage관련 Sendmessage에 대해서 간단하게 정리! 함수에 AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_NEWPAGE);이딴식으로 쓴다.그리고메세지맵에다가ON_COMMAND(ID_NEWPAGE, &클래스명::함수) 요딴씩으로 쓰면 끝. MFC에서 버튼이벤트에 첫번째 에 쓴 AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_NEWPAGE); 이 내용을 쓰게되면 메세지 맵에들어가서 클래스의 함수를 부르게 된다. 스트링 테이블에 이름을 등록하길 바란다.나는 ID_NEWPAGE라는 내용을 썻다. 2013. 3. 8.
ULTRA 후뤠시 어플 울트라 어플의 처음화면 클릭 했을때 똑딱 소리가 마음에 듭니다. 화면을 돌리면서 5개의 기능을 가지고있습니다. 계산기도 있고 가장 맘에 드는 후뤠시 수평? 후레시 어플중에 가장 좋은것 같습니다. 광고 같은것도 없고 생각보다 빠르고 많이 써보세요 ㅋ 2013. 3. 7.
MFC 경로가지고오기 그리고 자르기 char Path_buffer[256];char drive[256];char dir[256];char filename[256];char ext[256]; _splitpath(PathName,drive,dir,filename,ext);아오!!!!! 2013. 3. 7.
MFC 파일열기 CFile file;file.Open("filename",CFile::modeCreate|CFile::modeReadWrite);file.Write(쓸 내용,내용의 길이);file.Close(); 끝 이것만 알면됨~ㅋ 2013. 3. 7.
MFC tokenize 사용법 CString str;str = "*BEGIN Sol_Con! Problem titleSC00 KAERI TBM Safety TestSC00 GAMMA+ Rev00/Mod07hSC00 Circular Pipe ModelSC00 Prepared by Hyung Gon J";CAtlString resToken;int curPos= 0; resToken= str.Tokenize("% #",curPos);while (resToken != ""){printf("%s\n", resToken);resToken= str.Tokenize("% #",curPos);};fscanf대신에 string을 읽어올 일이 생겼을 때 쓰면 편리하다. 공백을 제외하고, 단어로 읽어온다. http://msdn.microsoft.com/e.. 2013. 3. 7.
MFC Doc에 접근하기. CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();CChildFrame *pChild = (CChildFrame *)pMain->GetActiveFrame();DrawViewDoc* pDrawDoc = (DrawViewDoc *)pChild->GetActiveDocument(); 도큐에 만든 변수를 접근 하려면 이런식으로 해야됨안하니까 ㅠㅠ 변수에 접근도 안되고 이상한 쓰레기값만 저장되고.. 이렇게 해서 변수들에 접근하고, 직렬화 할때 사용하면된다. 배열도 되고 2013. 3. 6.
MDI & SDI I. SDI의 각 클래스 포인터 얻기애플리케이션 클래스 포인터    CTestApp *pApp = (CTestApp *)AfxGetApp();메인 프레임 클래스 포인터    CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();도큐먼트 클래스 포인터    CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();    CTestDoc *pDoc = (CTestDoc *)pFrame->GetActiveDocument();뷰 클래스 포인터    CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();    CTestView *pView = (CTestView *)pFrame->GetActiveView(.. 2013. 3. 5.
MFC 확장자 만들기 1. 프로젝트에서 Resource View를 열어 String Table에 있는 String Table을 더블클릭한다. 2. 아래와 같이 문자열 관련 리소스 테이블이 나오는데 스크린샷에서 선택된 Caption처럼 문자열이 저장되어 있는 'IDR_프로젝트이름TYPE'을 선택한다. 3. 문자열을 주의 깊게 살펴보면 아래처럼 되어 있는 부분이 있다. (없을 수도 있다.) 여기서 파란색으로 드래그된 부분을 수정하면 된다. 첫번째 DAT 부분은 파일 저장 다이얼로그에서 파일 저장시 해당 파일 확장자에 대한 설명(아래 스크린샷)이고 두번째 .DAT는 실제 파일 확장자를 의미한다. 2013. 3. 5.
레지스트리 도킹윈도우 2012. 12. 18.
끝시작 벌써 11월을 마지막 회사에 다니게 되었고, 월급도 조금 받게 되었다. 시간이 흘러가며 걱정을 많이 하게 되었고, 해결되기도하고,, 앞으로 걱정할 일이 많겠지만 그걸 잊을 수 있는 방법들을 배우는 것도 중요할 것 같다.. 월요일 시작.. 2012. 11. 25.
착한남자 착한남자 드라마를 보며 정말 감정적인 드라마라는 것을 느낄 수 있었다. 원래 제목이 차칸남자인 이유를 이제 알것같다 여자주인공이 기억상실증을 겪으며 어린아이의 지식수준을 가지며 맞춤법도 모르지만 한남자만 기억하는 것을 보며 작가는 차칸남자라는 제목을 진것이 아닐까 라는 생각이 들었다. 이것을 알리 없는 사람들은 한글을 아껴야 한다 생 지랄을 했지만 제목이 대수냐 재미있으면 되는거지. 사람들은 이유도 모른체 지나간것 같다.. 그냥 내생각이다. 재미있다 착한남자 2012. 10. 12.
C++컨테이너 종류 퍼옴! 순차 컨테이너 (Sequence Container) vector : 벡터 (Vector) deque : 데크 (double ended queue) list : 리스트 (List) 컨테이너 어댑터 (Container Adaptor) stack : LIFO (Last in First out) 스택 queue : FIFO (First in First out) 큐 priority_queue : 우선순위 큐 (Priority queue) 연관 컨테이너 set : Set multiset : 여러 키를 가지는 set map : Map multimap : 여러 키를 가지는 map bitset : Bitset http://blog.newms.org/34 참고하면 좋을것 같다. 추가적인내용 2012. 10. 12.
함수포인터에 관하여 함수 포인터에 대해서 간단하게 정리 이런식으로 사용하면 함수가 많아질 경우 쉽게 정리하여 사용할 수 있을 것이라고 생각된다. #include int add(int a, int b); int sub(int a, int b); int mul(int a, int b); int div(int a, int b); void main() { int i; int a, b; char c; char op[] ={'+','-','*'}; int(*fun[])(int x, int y)={add, sub, mul};//함수 포인터 배열 printf("input (2EA):"); scanf("%d %d",&a,&b); for (i = 0; i 2012. 10. 8.
시작.. 작년 이맘쯤에도 다시 시작이라고 생각했었는데 어김없이 또 9월이 다가왔고 나는 또 시작한다. 수만은 이력서와의 싸움 힘들겠지. 그래도 긍정적인 마음으로 버텨보자 화이팅. 2012. 9. 4.
한국판 닥터진 드라마를 자주보는 나는 이번에 닥터진이 한다고하여 본방을 사수 일드를 본 나는 아애 새로운 느낌의 닥터진을 원했고, 대다수의 사람들은 기존의 드라마보다 훨씬 더 큰 것을 분명히 원했을 것이다. 그 이유는 한국이 드라마 왕국이기 때문에? 내생각에 40%정도? 닮아 있는 닥터진을 보며 뭔가 60%가 궁굼하였다. 일드의 닥터진은 만화책을 고스란히 가져다 놓았다. 하지만 여기는 한국아닌가? 우리나라 사람들과 이야기를 풀어나가려면 우리 정서에 맞게 풀어 나가야한다. 그러기에 스토리는 더 지켜봐야할 것 같다. 이미 결론은 나와있는 드라마인 닥터진! 더 많이 바꿔야 살아 남지 않을까? 드라마를 보며 아쉬웠던것은 송승헌의 첫 사극?이라고 해야되나? 두루마기를 걸친것이 너무 어색했다는 점~ 박민영의 현대시대와 사극 연기.. 2012. 5. 27.