쿨소프트

Samsung Smart App Challenge left_banner
초급
2007.12.10 15:49

함수(API)기초강좌

Comment 26Views 5298Votes 0
?

Shortcut

Prev Article

Next Article

+ - Up Down Comment Print
?

Shortcut

Prev Article

Next Article

+ - Up Down Comment Print

API

*메세지 구동방식(이벤트 처리방식)
 -windows용 P/G의 명령문 처리방식

*이벤트
 -사용자가 어떤 처리를 위해 A/P에게 보내는 각종신호
  ( 이벤트발생 -> O/S -> A/P )

*메세지
 -사용자가 발생시킨 각종 신호를 표준화한 정보

*windows환경에서 main함수(WinMain)
 [형식]
 int    APIENTRY     WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
 리턴형 함수호출류약 함수명

*함수호출규약
 -함수호출시 미리 정의해 놓은 약속에 의해 호출하는 방식지정
 [종류]
----------------------------------------------------------------------
                 | __stdcall                   | __cdecl
======================================================================
  default        |Basic, pascal, windows       | C
----------------------------------------------------------------------
인수가매개변수에 |right->left                  | right->left
전달하는 순서    |                             |
----------------------------------------------------------------------
매개변수의       |호출받는함수                 | 호출하는함수
메모리해제       |                             |
----------------------------------------------------------------------

 __stdcall과 같은 define값들 : WINAPI, APIENTRY 등등~

*핸들값(H가 앞에 붙은 클래스?)
 -windows용 p/g에서 구성요소중 무언가를 구분하기위해
  o/s가붙여 놓은 정수형 번호(식별번호)
 -각 요소를 접근,제어할때 핸들값을 이용해 설정

*windows용 p/g의 기본 골력함수
----------------------------------------------------------------------
WinMain | p/g의 시작 p/g의 기본요소설정(윈도우 객체생서이/메세지루프)
----------------------------------------------------------------------
WndProc | 메세지 처리함수
        | 사용자가 발생시킨 이벤트에 따른 여러가지 설정
----------------------------------------------------------------------

*WinMain함수의 역할
 1.출력할 윈도우에 대한 속성지정
   (커서/배경색/아이콘/메세지처리함수/속성지정한 윈도우이름등등)
 2.윈도우 클래스 O/S에 등록
   register class(WndClass)
 3.등록한 클래스를 통해 메모리에 윈도우 생성
 4.메모리상에 설정된 윈도우 정보를 바탕으로 화면에 출력
 5.메세지루프
   사용자가 발생시킨 메세지를 순차적으로
   꺼내와서 메세지 처리함수에세 보낸다.
   (프로그램 종료할때까지)

 1.Brush생성
 2.생성한 Brush 정보를 O/S의 그리기 정보 구조체에 등록
 3.그리기
 4.원상복구
 5.사용자가 생성한 Brush정보 해제

----------------------------------------------------------------------

*리소스resource
 -프로그램의 구성요소중, 사용자가 직접 코딩한 데이터가 아닌
  그림형태로 제공되어 출력되는 데이터 요소
  (메뉴,아이콘,커서,문자열테이블,비트맵등등...)
 -resource script 기능을 이용하여 visual하게 편집, 생성한다.

*메뉴의 속성지정
 -선택된 메뉴에 대한 표시
 -DWORD CheckMenuItem(HMENU hmenu, 메뉴ID, 메뉴속성);

----------------------------------------------------------------------
*비트맵(bitmap)
 -작은 점들의 2차원 배열형식의 비트에 영상정보를 저장하고 있는것
 -이미지정보저장(픽셀당 표현할수있는 색상수, 이미지크기,
                 해상도, 색상단면등등~)

 [비트맵출력]
 1.리소스파일추가
 -비트맵파일(insert/import) 256컬러초과는 편집안됨
 2.rc파일로부터 비트맵정보 읽어내기
 -HBITMAP LoadBitmap(HINSTANCE, "비트맵ID");
 3.메모리에 비트맵 정보 올리기
 -메모리에 DC설정(DC를 직접 생성)
 -HDC Create(CompatibleDc(HDC);
 -메모리에 지정 한 수와 DC와 똑같은 출격정도를 만드는 함수
 4.메모리DC가 비트맵정보 저장
 -SelectObject(메모리DC,비트맵핸들)
 5.bmp보여주기
 -메모리DC선택하고 있는 영상정보를 화면에 출력
  Bool BitBlt(출력할곳의 DC, x, y, width, hsight,
              출력할 데이터의 DC, x, y, 출력mode);
 6.생성한 DC정보 삭제
 -DeleteDC(HDC);
----------------------------------------------------------------------
*GDI객체의 정보 알아내기
 int GetObject(객체 핸들,저장할곳의크기,각객체별로저장할구조체번지);

*이미지크기변경(축소/확대)
 BOOL StrechBit(출력할 곳의 DC,x,y,w,h,출력할 곳의 데이터,x,y,w,h,출력모드);

*가상bitmap정보설정
 CreateCompatibleBitmap
 -해당DC와 호환되는(같은출력정보) 비트맵 영역을 메모리에 만드는 함수
----------------------------------------------------------------------
폰트(FONT)
 -같은 활자체, 크기, 장식, 굵기를 갖는 글자들의 모임
 -폰트객체를 이용하여 사용자가 지정한 논리적인 폰트 설정

 [폰트종류]
 래스트폰트  :비트맵 형태로 표현
 벡터  폰트  :선분 ..
 투루타입폰트:선분 + 곡선 ..

 [폰트객체생성]
 HFONT CreateFont(14개인수);
 *논리폰트 : 사용자가 정의한 폰트
 *물리폰트 : system에 설치된 폰트
 -사용자가 논리적인 폰트를 지정하면 폰트매퍼는 물리적인 폰트중에
  가장 비슷한 형태의 폰트 출력

 HFONT CreateFontIndirect(LPLOGFONT);
 -폰트의 속성을 한꺼번에 기억할수 있는 LOGFONT 구조체에 값을
  지정한 후에 , 폰트 객체 생성
----------------------------------------------------------------------
*컨트롤
 -사용자와의 특정 데이터를 주고 받을수 있는 인터페이스 도구
 -주로, 대화상자안에 위치하며, 한 화면에 여러개의
  데이터를 동시에 입력받기 위해 사용
 -모양이나 동작방식이 정해져 있기때문에 OS에 의해 제공된다.
 -차일드윈도우
 [컨트롤생성]
 -HWND CreateWindow("botton","컨트롤안에 출력할 문자열",윈도우style+각컨트롤 style,
                    x,y,w,h, 부모윈도핸들,(HMENU)ID,g_hInst,NUll);
----------------------------------------------------------------------
 [관련메세지]
 WM_COMMAND
 -컨트롤에 사용자가 이벤트발생시 보내지는 메세지

 [메세지]
 -일반메세지
  :윈도우관련메세지(WS_ : 모든윈도우 관련 메시지)
  :특정컨트롤에만 발생시킬수 있는 메세지(BM_ :버튼용 ,EM_ ,CB_ :콤보박스등등)
 -사용자정의 메세지
  :사용자가 지정하여 사용할수 있는 메세지
  :OS에서 설정한 메세지 값과 겹치면 안된다.
     WM_USER+ ? -_-;;;;;
 -통지메세지(notify message)
  :컨트롤에서 자신의 상태가 변경됐을때
   그 상태를 알리기 위해 부모윈도로 보내는 메세지
----------------------------------------------------------------------
*버튼메세지(부모윈도우 -> 버튼)
 -부모윈도우에서 버튼에게 메세지를 보내 이미 저장된 특정 동작을 수행하게끔 설정
 -OS에 등록된 윈도우(컨트롤)들은 각 동작 방식대로 이미 등록된 메시지 처리함수가 있다.
 -부모윈도에서 자식윈도에 명령설정시
  SendMessage()함수에 의해 메세지를 본낸다.
----------------------------------------------------------------------

*콤보박스
 -클래스명 : "combobox"
 -에디트+리스트box
 -style : CBS_SIMPLE       : 박스가 항상 펼쳐짐
          CBS_DROPDOWN     : 필요시 펼쳐짐
          CBS_DROPDOWNLIST : 입력불가, 필요시 펼쳐짐
 -리스트box에 설정한 메세지 똑같이 적용 CB_****
----------------------------------------------------------------------
*선택한 항목 넘기기
 1.선택한 항목의 index알아내기
  LB_GETSELCOUNT 선택한 항목의 총갯수 알아내기
  LB_GETSEEITEMS 다중선택리스트박스설정시 지정한(lParam) 정수형 배열에
                 선택한 항목의 index를 차례대로 기억시키는 메시지처리)
  LB_DELETESTRING 지정한 Index의 문자열 삭제할때 보내는 메세지
                 이때 리스트박스는 하나의 항목을 지우면 자동으로 밑에 항목이
                 위로 땡겨진다. 따라서 여러개의 항목을 지울때는 뒤에서 부터 지운다.
                                                                     
----------------------------------------------------------------------
*대화상자(dialog)
 -팝업윈도우
 -컨트롤을 배치시켜 사용자로부터 데이터를 입력받거나
  데이터를 보여주기위해 설계된 윈도우
 -리소스 스크립트에 의해 디자인(리소스 자원)
 [대화상자 종류]
 
 -모달형(modal)
  :대화상자를 닫기전에는 다른메뉴 선택이나 명령문 처리를 할수 없는
   형태의 대화상자
   [생성]
   int DialogBox(HINSTANCE,"대화상자ID",소유윈도우핸들,메세지처리함수명);
   BOOL EndDialog(대화상자핸들,종료시 지정한 버튼 ID);
   -대화상자출력, 운영, 종료
   -enddiaog함수가 호출되어 종료시 지정한 ID값을 return해주면 종료.

  -모델리스형(modeless)
  :대화상자를 열어놓은 상태에서 다른메뉴 선택이나 명령문 처리를 할수 있는
   형태의 대화상자
  [모델리스대화상자]
  HWND CreateDialog(HINSTANCE,"대화상자ID", HWND, 대화상자프로시져)
  -지정한 대화상자 관련 정보를 메모리에 생성한 후 그 핸들을 return
  ShowWindow(HWND,보이기모드);
  BOOL DestroyWindow(HWND);


*대화상자프로시져
 -대화상자에서 발생하는 메세지 처리 함수
 [타입]
 BOOL CALLBACK 함수명(HWND, UINT, WPARAM, LPARAM);
 -사용자가 처리하면 return TRUE;
  사용자가 처리하지않으면 return FALSE;
  이렇게 하면 OS가 알아서 처리
----------------------------------------------------------------------
*tab order 지정
 -tab key에 의해 입력받을 순서지정
 -첫번째 taborder를 갖는 컨트롤의 출력시 마우스 포커스를 갖는다.
 -layout메뉴 -> tab order(ctrl+D)

 [대화상자 컨트롤관한 통신관련함수]
 HWND GetDlgItem(HWND,ID);
 UINT GetDlgItemText(HWND,hDlg,ID, 저장할곳, 최대크기);
      SetDlgItemText
      GetDlgItemInt(HWND,ID,
                    BOOL *,         //사용자가 지정한 4번째 옵션이 맞는지틀린지여부
                                    //결과값체크할 변수의 주소지정
                    양수값체크유무);//
----------------------------------------------------------------------
*WM_INITDIALOG
 //다이얼로그 초기화 설정~!!!

*파일입출력작업
 [설정작업]
 -파일열기  c에서는 : FILE *fp=fopen("파일명","작업모드");     
          api에서는 : HANDLE CreateFile(~~~~~~~);

 -파일쓰기/읽기

*공통대화상자
 -사용자가 자주 사용되는 대화상자를 미리 만들어 OS차원에서 제공하는 대화상자
 -색상, 폰트, 프린터(인쇄), 파일열기/저장 (모달다이얼로그 란다.)
 -찾기/바꾸기 (모델리스)

*콤보box에 보여줄 파일명과 파일형식은 \0으로 구분해준다.
    "콤복박스에 출력할 문자\0*.txt"; <=이게 한쌍

----------------------------------------------------------------------
*스레드
 -하나의 P/G에서 작업단위별로 독립적으로 수행되도록 설정한 것.

  • ?
    [Level:3]노움워리어 2008.08.04 21:36
    감사합니다.
  • ?
    [Level:3]BeST 2008.10.31 16:58
    감사합니다.
  • profile
    [Level:8]야옹이 2008.12.28 19:21
    아직 이걸볼 단계는 아닌거 같네요 ㄷ
  • profile
    [Level:5]무달 2009.01.18 14:08
    후 뭔말인지 ㅋㅋㅋㅋㅋㅋㅋ
  • ?
    [Level:1]S열심히S 2009.01.29 21:59
    API 는 따로 공부를 해야할듯 ㅠㅠ
  • ?
    [Level:3]SungHoo 2009.02.15 20:15
    이게모지ㅜㅜ......;; 야옹이님 말씀처럼 아직 볼단계가 아닌듯싶어요ㅜㅋ
  • ?
    [Level:89]dbfl 2009.02.25 01:11
    감사합니다
  • ?
    [Level:42]two3213 2009.03.02 15:19
    ㅋㅋ 아직 못알아듣겠네요.
  • ?
    [Level:6]교주 2009.03.08 19:35
    어렵네요 감사합니다 ^^
  • ?
    [Level:4]두리 2009.03.12 13:24
    감사합니다.
  • ?
    [Level:10]꼴딱 2009.04.16 18:45
    감사합니다.
  • ?
    [Level:2]BaboMan 2009.06.03 03:40
    감사합니다.
  • ?
    [Level:5]마우스스크롤 2009.07.11 17:53
    후 어렵다...............
  • ?
    [Level:10]showtime 2009.10.06 13:40
    잘보고 갑니다~ ^^ ㅋ
  • ?
    [Level:6]baeksungrae 2009.11.07 17:08
    잘보고 갑니다.. 에휴 어렵긴 어렵네요^^;;
  • ?
    [Level:10]리버썡 2010.01.03 21:47

    잘보고갑니다.

    감사합니다.

  • ?
    [Level:13]hanasi 2010.01.07 14:32

    감사 합니다.

  • ?
    [Level:8]Hack1416 2010.01.15 14:44

    좋은 정보입니다 .

  • ?
    [Level:8]장황제 2010.01.23 14:45

    감사합니다.

  • ?
    [Level:7]김최 2010.02.03 00:40

    감사합니다

  • ?
    [Level:5]gmlgns 2010.02.17 14:24

    잘보고갑니다~

     

  • ?
    [Level:1]모하비 2010.02.28 04:11

    좋은 자료 감사합니다

  • ?
    [Level:5]맹물 2010.05.07 14:24

    감사합니다

  • ?
    [Level:3]tjdqlsd234 2010.05.18 20:43

    감사합니다

  • ?
    [Level:1]Oath 2012.01.06 12:52

    좋은 자료 감사합니다 ^^;

  • ?
    [Level:0]landolf 2012.02.09 00:25

    감사합니다.


  1. No Image

    Lena 03 한글

    Lena 03 한글입니다. 저도 친구를 통해서 받은 거라 출처는 모르겠습니다. 다만, 동영상 시작에 제작자의 호칭이 있습니다. 문제가 되면 삭제하겠습니다. 동영상 SWF 파일과 문제파일이 같이 있습니다. ysvlnsbvlnf님께서 출처 알려주셨습니다. http:/...
    Date2010.01.20 Category초급 Byowlinux Views2101
    Read More
  2. No Image

    Lena 02 한글

    Lena 02 한글입니다. 저도 친구를 통해서 받은 거라 출처는 모르겠습니다. 다만, 동영상 시작에 제작자의 호칭이 있습니다. 문제가 되면 삭제하겠습니다. 동영상 SWF 파일과 문제파일이 같이 있습니다. ysvlnsbvlnf님께서 출처 알려주셨습니다. http://a...
    Date2010.01.20 Category초급 Byowlinux Views2138
    Read More
  3. No Image

    Lena 01 한글

    Lena 01 한글입니다. 저도 친구를 통해서 받은 거라 출처는 모르겠습니다. 다만, 동영상 시작에 제작자의 호칭이 있습니다. 문제가 되면 삭제하겠습니다. 동영상 SWF 파일과 문제파일이 같이 있습니다. ysvlnsbvlnf님께서 출처 알려주셨습니다. http:/...
    Date2010.01.20 Category초급 Byowlinux Views3377
    Read More
  4. No Image

    POC 2009 문제와 보고서

    문제 file.zip 보고서  POC2009.pdf 열심히 공부합시당...
    Date2009.10.23 Category초급 By마플 Views3519
    Read More
  5. No Image

    Panda Security easy challenge 풀이

    Panda Challenge 풀이 보고서.mht 건승하세요.
    Date2009.10.23 Category초급 By마플 Views3229
    Read More
  6. No Image

    악성코드분석을위한Unpack

    국가안전사이버센터에서 만들었다고합니다~~!
    Date2009.05.07 Category초급 By가나다봉 Views5439
    Read More
  7. No Image

    올리 디버거 설정입니다. 초보분들 많은 도움이 될거라 생각해요^^

    처음 강좌를 올리는거라 어떻게 올리는지 모르겟네용...ㅠㅠ 그래도 초보분들 이거 보고 질문에 도움이 됐음 하네요...^^제가 사용한 첨부 파일과 함께 올려 드려요^^
    Date2009.01.04 Category초급 By눼용 Views8782
    Read More
  8. No Image

    OllyDbg 강좌&ASM 강좌

    올리디버거 사용법 강좌&올리디버거어셈 강좌
    Date2008.09.19 Category초급 ByНyan™ Views12065
    Read More
  9. No Image

    ollydbg 기초 강좌

    Date2008.04.08 Category초급 Byysvlnsbvlnf Views10323
    Read More
  10. reverse engineering / assembly language / computer structure

    리버스 엔지니어링 여러분들은 크랙에 대해서 아는가? 크랙crack. 부수다 라고 해석할 수 있다. 부수다? 소프트웨어의 크랙은 본래의 내용을 부숴서 자기 마음대로 수정하는 것이라 할 수 있겠다. 그리고 크래킹의 세계에서 패치는 결국 크랙과 같은 의미로 ...
    Date2008.04.01 Category초급 ByEROS Views4615
    Read More
  11. No Image

    Soft - Ice 설명 / part:2

    [ 시작하면서... ] 그럼 먼저 Soft-Ice(이하 '소아'로 칭함)의 기본적인 사용법부터 알아봅시 다. 이 내용은 대부분의 게시판이나 자료실에 과거에 올라온 설명 자료들이 있습니다. 하지만 알아야 뭘 해먹는다고 사용 방법부터 알아야겠기에 다시 한번 제가 ...
    Date2008.04.01 Category초급 ByEROS Views3522
    Read More
  12. No Image

    Soft - Ice 설명 / part:1

    1) 설치 Protected Mode에서 동작하며, DOS를 virtual mode로 사용하며, 사용되는 기능은 DOS나 BIOS를 사용하지 않으므로 Real mode를 사용하는 모든 OS의 debug가 가능합니다. 예를 들면 DOS의 boot 과정의 debug, device driver의 debug등 입니다. 그리고...
    Date2008.04.01 Category초급 ByEROS Views4468
    Read More
  13. No Image

    keygenning4newbies 4 keygen만들기

    4번째 keygen입니다. 혼자 삽질해서 만든 내용이다 보니 이런 방법만 있나라는 생각이 듭니다. 이 글을 읽으시는 분들중 혹시 다른 아이디어가 있으시면 함께 올려주셔서 같이 공부했으면 합니다.
    Date2008.02.11 Category초급 By무한질주 Views5221
    Read More
  14. No Image

    악성코드 분석가 입장에서 본 PE 구조

    악성 코드 분석에 관한 자료들 입니다. 서핑하다 얻은 자료인데 정확한 출처는 기억이 안나고 안랩에서 분석한 자료로 알고 있습니다. 올릴 부분이 없어 리버싱 강좌에 올립니다. 그럼 모두들 열공하세요 악성코드분석.doc 악성코드분석.doc
    Date2008.02.11 Category초급 By무한질주 Views5539
    Read More
  15. No Image

    keygenning4newbies 3 keygen만들기

    이번엔 3번째 내용입니다. 혹 keygen만드신 분들은 게시판에 올려주세요^^ 그럼 열공하세요
    Date2008.01.28 Category초급 By무한질주 Views6051
    Read More
  16. No Image

    keygenning4newbies 2 keygen만들기

    안녕하세요 무한질주입니다.^^ 이번에는 2번째 내용으로 이어져요^^
    Date2008.01.15 Category초급 By무한질주 Views4104
    Read More
  17. No Image

    keygenning4newbies 1 keygen만들기

    crack 하는 것과 keygen만드는 내용으로 만들어 보았습니다. 그럼 열공하세요
    Date2008.01.10 Category초급 By무한질주 Views5543
    Read More
  18. No Image

    Win32 API 주요 함수

    함수설명 Win32 API 주요 함수 AdjustWindowRect : BOOL AdjustWindowRect(LPRECT lpRect, DWORD dwStyle, BOOL bMenu); 작업 영역의 크기는 윈도우 크기에서 타이틀 바와 경계선, 메뉴, 스크롤 바 등의 영역을 제외한 영역이다. 일반적으로 MoveWindow, S...
    Date2007.12.12 Category초급 ByНyan™ Views4397
    Read More
  19. No Image

    OllyDBG 에서 브레이크포인트란?

    우리가 프로그래밍 을하게되면서 쉽게 구할수도있고 많이 접하는 어느한 디버거에 대해서 간략히 설명을해볼까합니다. 오늘은 OllyDBG 란 리버싱 역공학(등등)을하면서 많이 접하게되는 디버거중 많은사랑을 받는 프로그램중하나라고 해도 과언이아닐것입니다....
    Date2007.12.12 Category초급 ByНyan™ Views6339
    Read More
  20. No Image

    함수(API)기초강좌

    API *메세지 구동방식(이벤트 처리방식) -windows용 P/G의 명령문 처리방식 *이벤트 -사용자가 어떤 처리를 위해 A/P에게 보내는 각종신호 ( 이벤트발생 -> O/S -> A/P ) *메세지 -사용자가 발생시킨 각종 신호를 표준화한 정보 *windows환경에서 main함수...
    Date2007.12.10 Category초급 ByНyan™ Views5298
    Read More
Board Pagination ‹ Prev 1 2 3 4 5 6 7 8 Next ›
/ 8
Designed by hikaru100

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 Cancel

SketchBook5,스케치북5

SketchBook5,스케치북5

SketchBook5,스케치북5

SketchBook5,스케치북5

X
Login

You will be still signed in even when the browser is closed. It is not recommended to use this if you are using a public computer, for your personal information could be violated

아이디/비밀번호를 잊어버리셨나요?

아이디/비밀번호 찾기

아직 쿨소프트의 회원이 아니신가요?

아이디/비밀번호 찾기

X