디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

형아들 API질문좀

API(219.251) 2010.09.18 17:36:28
조회 339 추천 0 댓글 1

#include <windows.h>
#include <tchar.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass=TEXT("Notepad v1.0");

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
     ,LPSTR lpszCmdParam,int nCmdShow)
{
    HWND hWnd;
    MSG Message;
    WNDCLASS WndClass;
    g_hInst=hInstance;
    WndClass.cbClsExtra=0;
    WndClass.cbWndExtra=0;
    WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    WndClass.hInstance=hInstance;
    WndClass.lpfnWndProc=WndProc;
    WndClass.lpszClassName=lpszClass;
    WndClass.lpszMenuName=NULL;
    WndClass.style=CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&WndClass);
    hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
    NULL,(HMENU)NULL,hInstance,NULL);
    ShowWindow(hWnd,nCmdShow);
    while (GetMessage(&Message,NULL,0,0)) {
    TranslateMessage(&Message);
    DispatchMessage(&Message);
    }
    return (int)Message.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
    HDC          hdc;
    PAINTSTRUCT  ps;
    static TCHAR str[10][100];  //그 전줄에 있던 정보또한 가지고 있어야 되므로 2차원 배열로 계산
    static int line_count = 0;  //행
    static int row_count = 0;   //열
    static int ypos = 0;    //y값 조절
    int tempypos = 0;
    static int tempRow_count[10];

    //문자열 개수 출력을 위한 변수들
    int charNum = 0;
    TCHAR charNumbuf[30];

    switch (iMessage) {
  case WM_CREATE:
  break;

  case WM_CHAR:
  switch(wParam)
  {
  //<- 키가 눌렸을 때
  case VK_BACK:
  if(row_count == 0 && line_count != 0)
  {
      //그 전 줄에서 몇자까지 입력했었는지 정보 얻어옴
      line_count--;
      row_count = tempRow_count[line_count];
      ypos -= 20;     
  }
  //처음이라면 <-키 무시
  else if(line_count == 0 && row_count == 0)
  {
      break;
  }
  str[line_count][--row_count] = NULL;

  //지우고 다시 그리도록
  InvalidateRgn(hWnd, NULL, TRUE);
  break;

  case VK_RETURN:
  //10줄 입력했으면 더이상 안넘어가도록
  if(ypos == 180)
      break;

  //99자까지 입력하지 않고 엔터키로 개행했을 때 그 전 줄에서 몇자까지 입력받았는지 정보를 담아놓은 후
  //<-키로 문자 삭제 시 그 정보를 사용해 전 줄로 이동해서 그 위치부터 삭제되도록
  tempRow_count[line_count] = row_count;

  row_count = 0;
  ypos += 20;
  line_count++;
  break;

  default:
  //10번째 줄에서 99자까지 출력했으면 더이상 출력을 막음
  if(line_count == 9 && (row_count != 0) && (row_count % 99) == 0)
      break;
  //자동개행 문자 99자까지 입력받았을 땐 자동개행
  else if((row_count != 0) && (row_count % 99) == 0)   
      //이 작업을 끝마쳐야 출력이 정상적으로 되므로 PostMessage안씀.. SendMessge로..
      SendMessage(hWnd,WM_CHAR,VK_RETURN,NULL);
  
  str[line_count][row_count] = wParam;
  str[line_count][++row_count] = NULL;

  InvalidateRgn(hWnd, NULL, FALSE);
  break;
  } 

 

  return 0;

  case WM_PAINT:  
  hdc = BeginPaint(hWnd, &ps);

  //행단위로 출력
  //한글 한글자도 1글자, 영문 한글자로 1글자로 계산하기 위해서 유니코드 기반으로 작성
  for(int i = 0; i<=line_count; i++)
  {      
  charNum += _tcslen(str[i]);
  TextOut(hdc,0,tempypos,str[i],_tcslen(str[i]));
  tempypos+=20;
  }  

  //출력된 문자 수 출력해주는 곳
  wsprintf(charNumbuf,_T("출력된 문자 수 : %d"),charNum);
  TextOut(hdc,50,230,charNumbuf,_tcslen(charNumbuf));
  EndPaint(hWnd, &ps);
  return 0;

 

 
  case WM_DESTROY:
   PostQuitMessage(0);
   return 0;
 }
 return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}






10줄짜리 메모장 API로 만드는거인데
입력출력,엔터키,백스페이스,자동개행, caret이용한커서
이걸 전부 되게 하는건데 지금 다 하고 caret이용해서 입력된문자열뒤에 커서 따라오게해야되는데
그걸 몬하겟어염 ㅠㅠ꼭좀 도와줘요~~~



추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 끝까지 다 본 걸 후회하게 만든 용두사미 드라마는? 운영자 25/07/07 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45322 65
2870769 요즘 인터넷에서 자주 보이는 간첩 특징 정리.txt 야옹아저씨갤로그로 이동합니다. 06:09 0 0
2870764 Skt 미친것들 전화기가 꺼져있어 넥도리아(175.196) 03:57 25 0
2870763 재구축 인터넷 망 넥도리아(175.196) 03:47 22 0
2870762 나 폰 2개 폰 액정분해하다가 깨졌어요. 넥도리아(175.196) 03:39 26 0
2870760 1인개발자할건데 뭐배우면 좋나요? [2] 프갤러(1.238) 03:32 32 0
2870758 윤석열 구속 확정 [1] 야옹아저씨갤로그로 이동합니다. 02:56 35 1
2870756 내일 휴가인 아스카 [2] 아스카영원히사랑해갤로그로 이동합니다. 02:37 35 0
2870750 경찰 왜 욕하는거임 뒷통수한방(1.213) 00:56 27 0
2870749 C# bool형 대소문자 [3] ㅇㅇ갤로그로 이동합니다. 07.09 49 0
2870748 ㅆㅇㅆ [1] 발명도둑잡기(39.7) 07.09 45 0
2870747 생일 끝나기 24분전 ㅆㅇㅆ(124.216) 07.09 35 0
2870746 일본거주 10년차 외노자 월급, 상여 프로외노자갤로그로 이동합니다. 07.09 41 1
2870745 패션 개발자인 나야 ㅇㅂㅇ [1] 익명의따당이갤로그로 이동합니다. 07.09 67 0
2870744 도스 GUI 모음 발명도둑잡기(39.7) 07.09 38 0
2870743 문내립니다 [6] 개멍청한유라갤로그로 이동합니다. 07.09 44 0
2870742 카카오톡에 있는 이상한 기능 [2] 발명도둑잡기(39.7) 07.09 44 0
2870741 ai성능 날이갈수록 개박살나는거같은데 공기역학갤로그로 이동합니다. 07.09 41 0
2870740 오늘 쓰레기버리는데 갑자기 공무원들이 잡아세우더라 뒷통수한방(1.213) 07.09 29 0
2870739 저거 슼유동 진짜 냥덩이 인갑네 말투 비슷해서 그런갑다했었는데 [2] ㅆㅇㅆ(124.216) 07.09 42 0
2870738 고용24에다가 구직 신청 넣었다 [2] ㅇㅇ(118.235) 07.09 55 0
2870737 다시 프갤 들어옴 [4] ㅇㅇ(118.235) 07.09 44 0
2870733 GPT 임마 이거 내 프로젝트는 완성못하고 남의 외주만 완성한다고 ㅆㅇㅆ(124.216) 07.09 37 0
2870732 아래 문구 gpt에게 붙여넣은 결과 [2] ㅆㅇㅆ(124.216) 07.09 66 0
2870731 gpt에 이거 복붙해봐 신세계임 [1] 프갤러(210.99) 07.09 62 0
2870730 지금 프로그래밍 언어 배우는거 어떻게 생각해? [2] 프갤러(119.192) 07.09 48 0
2870728 전문학교 나온사람잇음?? [2] 프갤러(211.235) 07.09 34 0
2870727 토스로 이직했어 [2] ㅇㅇ(118.235) 07.09 77 0
2870725 프갤 ㅈ망했규나 [5] 조루디(110.35) 07.09 79 0
2870724 더워 조루디(110.35) 07.09 25 0
2870722 자주국방 시작하는 이재명 [9] 야옹아저씨갤로그로 이동합니다. 07.09 97 5
2870720 외케 취업 어려움 [2] 무관갤로그로 이동합니다. 07.09 55 1
2870719 Nginx Proxy Manager 질문이요 ㅠ [3] 프갤러(1.236) 07.09 56 0
2870718 막장 아마추어 리죄명 끌어내리고 처벌해야 ♥냥덩이♥갤로그로 이동합니다. 07.09 27 1
2870717 코드주면 알아서 포트폴리오 짜주는 그런거 없나 ㅇㅇ(223.38) 07.09 32 0
2870715 모든소스 짜는걸 gpt한테 넘긴다.. ㅇㅇ(175.197) 07.09 34 0
2870714 멍퀴벌레님 깝치지 마세양❤+ 나님 삼대 5백 출신이에양⭐+ [1] ♥냥덩이♥갤로그로 이동합니다. 07.09 36 0
2870713 민생지원쿠폰 스위치 1,2 또는 데이터복구 업체에 하드 스마트폰 맡기기 넥도리아(121.139) 07.09 20 0
2870712 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 07.09 28 0
2870711 아 ㄹㅇ 개피곤하넹 [1] ♥냥덩이♥갤로그로 이동합니다. 07.09 37 0
2870710 초Ai 스카이넷 냥덩❤ [1] ♥냥덩이♥갤로그로 이동합니다. 07.09 41 0
2870709 러스트로 소설 써볼까 [1] 루비갤로그로 이동합니다. 07.09 36 0
2870708 타자 하두 많이 쳐서 손가락이 다 아프네 루비갤로그로 이동합니다. 07.09 28 0
2870707 살면서 호구처럼 당하기 싫으면 알고있자 [1] ㅇㅇㅇㅇ(124.198) 07.09 37 0
2870706 오늘 생일인데 아직도 버그 수정중 [7] ㅆㅇㅆ(124.216) 07.09 53 0
2870705 솔직히 회사 밥 먹이는 개발자 몇이나 된다고 [3] 프갤러(106.101) 07.09 65 0
2870704 날씨 애미뒤졌네 [1] 류류(118.235) 07.09 31 0
2870703 나님 피궁피궁.. ♥냥덩이♥갤로그로 이동합니다. 07.09 27 0
2870702 근디 나 Vue는 공부 안했고 Solid는 공부했는데 왜 Solid는 [2] ㅆㅇㅆ(124.216) 07.09 52 0
2870701 흠.. 빨라야 10월인강간.. ♥냥덩이♥갤로그로 이동합니다. 07.09 29 0
뉴스 포레스텔라, 오늘(9일) 완전체 신곡 ‘Everything’ 발매! 디시트렌드 07.09
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2