목록전체 글 (1268)
바람이 머문 언덕
프로그램은 실행은 CPU가 담당하는데 CPU는 역시 메인 메모리(RAM)에 올라온 데이터를 가지고 실행을 하게 됨니다. 프로그램도 메모리에 올라간 다음에 실행되는데 함수의 이름은 메모리 사이에 존재하는 함수의 위치를 가리키는 주소 값을 의미 합니다. int i; 에서 변수 i가 정수형 값을 저장하는 주소를 나타내 것 처럼 함수명도 함수의 저장 위치를 나타내는 것입니다. 함수도 포인트 변수를 선언 할 수 있는데 함수의 포인트 형을 결정 짓는 요소는 리턴형과 전달 인자로 int (*pfun) (char );라고 선언 했다고 하면 pfun은 포인트 변수 명되고 int형 을 리턴하며 전달인자로 char형을 가지는 함수의 주소를 값으가지는 함수 포인트를 선언한 것입니다. 함수 포인트의 사용 할 수 있는 곳은 많은..
퀸 맥클러스키 법칙을 이용해서 논리식 간소화하는 프로그램을 c로 작성해 보았습니다. 퀸 맥클러스키 법칙은 2개의 민터엄이 1개의 변수만 차이가 난다면 그 그변수를 제거하여 문자가 하나 작은항으로 줄일 수있는데 이 과정은 모던 민트미엄에 대해서 철저하게 조사해 마칠 때까지 반복하면 된다. 0000, 0001, 1001, 1010, 1011, 100_ 있으면 0000과 0001은 하나만 다르므로 000_으로 하나가 줄 일 수 있으며 1001과 1011도 10_1로 줄 일 수 있다 이런 식으로 모든항과 새로 생긴항에 대해서도 되풀이 해서 더 이상 제거가 생기지 않을 때 까지 반복 한다. 부울 함수를 퀸 맥클라스키 법칙을 이용해서 간소화하는 직접 작성한 프로그램 소스와 실행 파일을 올려 놓았습니다. #inclu..
GetCursor 함수를 이용해서 커스 모양을 얻어 올 때 다이렉트 x와서와 같이 사용자가 만든 커스 일 경우 일정한 모양만 반환해서 마우스 커스가 변경 되었는지 알기 힘들 때 커스의 모양이 바뀌었는지 알기 위해서 만든 함수로 커스의 특정 위치의 색을 반환 합니다. COLORREF GetCursorColor(int x, int y) // 색의 위치를 얻기 원하는 마우스 커스의 아이콘의 좌표를 전달 { CURSORINFO ci; ICONINFO ii; COLORREF rgb = 0; ci.cbSize = sizeof(CURSORINFO); // 커서 정보를 구하기 위해서 반드시 세팅해야 한다 if(GetCursorInfo(&ci)) { GetIconInfo(ci.hCursor, &ii); // 커서에 해당..
MFC에서 만든 특정 윈도우의 화면을 캡처하기 위해서 만든 함수입니다. 캡처 할 범위를 전달 해주면 지정 윈도우에서 그 범위의 화면을 캡처해서 char형 포인트로 반환하는 함수 입니다. char* Capture(HWND hwnd, int x, int y, int width, int height) // 윈도우 화면 캡처 { CDC dc, SDC; char* buf = new char(width * height * 4); // 32bit CBitmap bmp, * pbmp; //ScreenDC.CreateDC(L"DISPLAY", NULL, NULL, NULL); SDC.m_hDC=::GetDC(hwnd); dc.CreateCompatibleDC(&SDC); // DC에 관련하는 디바이스와 호환성 있는 메모..
인라인 함수는 일반 함수처럼 함수를 만들고 놓고 필요 할 때마다 호출해서 사용하는게 아니라 함수를 호출한 자리에 함수 코드를 끼워 넣어 속도 향상을 목적으로 사용 한다. 그런나 인라인 함수로 선언해도 컴파일러가 함수의 길이가 길거나 처리하는 내용이 복잡한 경우에는 그냥 보통 함수처럼 처리하는 경우도 있다. inline int max(int a, int b) { return (a < b) ? -1 : ( a == b) ? 0 : 1 ; } int main( void) { int a = 3; b = 5 , c = 0; c = max(a, b) < 0 ? b: (a == b) ? 0 : a ; return c: } 위와 같이 선언을 해주었을 때 max 함수를 main 함수에서 호출하는게 아니라 max 함수의 ..
mouse_event 함수는 특정 윈도우가 아닌 활성화 된 윈도우로 이벤트 메세지를 보내는 저 레벨 함수 입니다.
템플리트 기능이란 데이터 타입만 다를 뿐 골격이 동일한 경우에 사용하면 편리한 기능이다. template int function(T i, T k) { return (i < k) ? 1 : 0; } 위에 처럼 만들어 놓으면 다른 여러가지 형을 데이터에서 사용 할 수 있다. int형에서 사용하고 싶으면 int function(int i, int k); , long 형의 데이터를 사용 한다면 int function(long i, long k); 라고 플로토 타입을 적어 주면 된다. 두 개다 동시에 적어도 된다. 그리고 template 함수는 라이블리 함수로 만들 수 없다. 소스 형태로 포함 되어야 한다. template 클래스는 기능을 클래서에 적용해서 좀 더 큰 효과를 기대 할 수 있다. 선언 하는 형식이 ..
// 리스트는 많이 사용하는 데이터 구조라 template 기능과 함수 포인트를 이용해서 만든 더블 리스트 입니다. // 비교 함수와 노드 삭제 함수를 클래스 만들어서 클래서 생성시 전달 해주어야 합니다. // template 기능을 사용하는 함수는 라이블리 파일로 만들 수 없고 소스 형태로 포함 되어야 합니다. //예) struct data{ int day; char *memo; long money; long balance; unsigned long code; } ; // struct node{ node *prev; data *dt; node *next; } ; // static int cmpdata(data* n, data* d) // { return (n->day==d->day) ? 0 : (n->..