- 음악과 나 -/『 짬 통 』

4월9일. winCE강의

noon2dy 2005. 4. 9. 09:33

(이벤트도서) Programming Microsoft Windows CE .NET Third Edition

큰도서이미지보기
Douglas Boling
노영선
정보문화사
40,000원32,000원 (20%↓)
960원 (3%)
8956741735
번역서 / 2004-02-24 / 1,415 쪽
중고급

 

 

찰스 페졸드?

 

winapi 정복

 

Programming Microsoft Windows with MFC (2/E)

 

 

winapi.co.kr. 처음부터.

 

 

 

찰스시몬? 헝가리안 표기법. -> 변수이름에다가 + 접두어

 

longlong int  : 8바이트...

 

long int  4바이트

 

 

'A' =? 65. C에서 int형?

 

 

데이터형 의미
BYTE unsigned char형
WORD unsigned short형
DWORD unsigned long형
LONG long과 동일하다.

LPSTR(long pointer STR)

char *와 동일하다.
BOOL 정수형이며 TRUE, FALSE  중 한 값을 가진다

 

 

ex)

 

1)

typedef int BOOL;

 

#define TRUE 1

#define FALSE 0     => c에서 요런 형태

전처리 : 컴파일 시간 이전에 처리. 실행시간에 처리해야될것을 전처리시간에 처리하니깐.

오버헤드가 줄어듬. => 최적화 가능.

 

 

2)

typedef int BOOL;

const int TRUE = 1;

const int FALSE = 0;   -> 자바에 const는 없지? C++에 있던것 C로 가져왔다.

: typechecking.이 가능. 타입이 엄격히 처리가능

 

 

3)

typedef enum {         -> 0부터 1씩 count

FALSE, TRUE

} BOOL;

 

 

BOOL b;

b = TRUE;

 

 

1-3 비트 OR연산자

 

하나의 문자에대해 속성지정.

1)

typedef struct {

char ch;

BOOL underline;

BOOL italic;

BOOL blod;

BOOL shadow;

} CHAR;

 

CHAR c;  

c.ch = 'A';                        A라는 문자지정

c.underline = TRUE;           문자의 속성지정

c.italic = FALSE;

c.bold = TRUE;

c.shadow = FALSE;

 

=> 밑에꺼보다 비효율적. 속성마다 따로 만들어서..

 

 

2)

 

#define UL 1               // 맨 오른쪽이 1

#define ITALIC 2          // 오른쪽에서 두번째가 1

#define BOLD 4;          // .....

#define SHADOW 8;

 

typedef struct {

     char ch;

     int a;

} CHAR;

 

 

CHAR c;

c.ch = 'A';

c.attr &= ~c.attr;

c.attr |= UL;

c.attr |= (ITALIC | BOLD);

c.attr &= ~ITALIC;              // ITALIC 취소하는거..

 

 

 

~ NOT

& AND(MASK연산- 해당비트 뽑아낼때사용)

|  OR(MASK연산, 치환할때)

^ XOR(비교할때-0나오면같고1나오면 다름. 패리티체크, CRC, 보안암호화)

 

 

 

SWAP(콜바이레퍼런스로 값바꿀때쓰는 함수)함수. 의 다른 표기.

 

*pa = *pa ^ *pb;

*pb= *pa ^ *pb;

*pa = *pa ^ *pb;

 

또는

 

*pa = *pa + *pb;

*pb= *pa - *pb;

*pb = *pa - *pb;

 

(가독성 떨어지고, 같은 주소값일때, 0이 나오는 오류..프로그램 정지한다. -_- )

 

 

 

중간에 저장안되가지고 지워졌다. -_-

씨불!!!!

===============================================================================

C언어 프로그래밍 (2/E) (개정판)

큰도서이미지보기
Brian W. Kernighan , Dennis M. Ritchie
김석환
대영사
16,000원15,200원 (5%↓)
460원 (3%)
8971630264
번역서 / 2004-09-08 / 363 쪽
예상출고일: 금일 가능 (근무일기준)
*서평수 (5개)
위 도서의 원서
The C Programming Language : ANSI C Version (2nd Edition) I Prentice Hall I Brian W. Kernighan

=====================================================================================

 

 

Run-Time Library Reference  

qsort

Performs a quick sort.

void qsort(
   void *base,
   size_t num,
   size_t width,
   int (__cdecl *compare )(const void *, const void *) 
);

Parameters

base
Start of target array.
num
Array size in elements.
width
Element size in bytes.
compare
Comparison function. The first parameter is a pointer to the key for the search and the second parameter is a pointer to the array element to be compared with the key.

함수포인터..

 

int add(int a, int b)

{

return a+b;

}

 

int substract(int a, intb)

{

return a-b;

}

 

int re;

int(*fp)(int, int);  하면 fp는 add나 substrack를 가리킬 수 있겠지.

 

fp = app;

re=(*fp)(5,6);

fp = substrack;

re = (*fp)(5,3);

 

Qsort같은경우.. 타입이 뭔지 모르기때문에..

함수 포인터가 필요하겠지..

 

 

 

포인터 쓰는경우.

=>

호출받아서 바꾸고 싶을때.

구조체 접근해서쓸때 오버헤드줄이기위해.

배열 넘겨줄때(시작주소값, 크기)

 

 

 

#include

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPRAM);
HINSTANCE g_hInst;
LPSTR lpszClass = "First";


int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
    ,LPSTR lpszCmdParam,int nCmdShow)
{
 HWND hWnd;
 MSG Message;
 WNDCLASS WndClass;
 g_hInst=hInstance;   전역변수로 응용프로그램에대한 인스턴스핸들 저장.
 
 윈도우 클래스에 셋팅 그냥 0으로 한다. -_-
 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)WndProc;
 
 WndClass.lpszClassName=lpszClass;
 메뉴는 지금 안쓴다.
 WndClass.lpszMenuName=NULL;
 수평 수직 스크롤바 만들기.
 WndClass.style=CS_HREDRAW | CS_VREDRAW;

 운영체제로 등록하기. (& : 일반적으로 구조체 변수 는 주소값으로 넘겨줌..
  값다 넘겨주면 오버헤드가 크지. 그래서 포인터로 넘겨줌)
 RegisterClass(&WndClass);
 
 hWnd=CreateWindow(lpszClass, "첫번째 예제입니다.",WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
    NULL,(HMENU)0,hInstance,NULL);
 
 (여기에 조건문을 쓸수 있다. )

 ShowWindow(hWnd,nCmdShow);
 

// MessageBox(hWnd, "끝나기 전에 잠시 멈춤", 제목없음", MB_OK


 while(GetMessage(&Message,0,0,0)) {
  TranslateMessage(&Message);
  DispatchMessage(&Message);
 }
 return Message.wParam;
}

 

응용프로그램에서 호출하는 함수: 콜백함수

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
 switch(iMessage) {
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }

디폴트윈도우프로시저 : 정의 안한건 알아서 .
 return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

 

 

int nums[10] = { ...};

int size = sizeof(nums)/sizeof(nums[0]);

 

void f(int nums[])

{

it size = sizeof(nums) /sizeof(nums[0]); -> 1이 나옴.  사실. int nums[] 는 int *nums 다..

}                                                                                                       변수다..

 

void f(int *nums)

{

it size = sizeof(nums) /sizeof(nums[0]);     이거하고 같다.

 

단지 배열을 전달한다는걸 알려주려고 위에것처럼 표기함...                                                     

 

그래서 보통 배열을 함수로 넘겨주려면 시작주소와 함께 넘겨준다.

아니면 아예 전역공간에다가 배열을 선언해놓든지.

 

 

e-mail : for1003@itisn.net -> 강사님 이메일.

 

'- 음악과 나 - > 『 짬 통 』' 카테고리의 다른 글

자료구조..  (0) 2005.06.03
2번째 토요수업  (0) 2005.04.16
dma..  (0) 2005.04.09
서비스 관리  (0) 2005.03.31
어딘진 모르지만. . .  (0) 2005.03.28