API 73

ShellExecute 사용예 - 좋음

ShellExecute 사용예 조회(23) Delphi (델파이) | 2008/07/22 (화) 10:40 추천하기(0) | 스크랩하기(0) 프로그램을 띄우거나 파일을 실행할경우 ShellAPI 함수인 ShellExecute() 를 사용합니다. 이 함수는 윈도우즈 탐색기에서 파일을 선택하고 더블클릭하는 기능과 동일한 동작을 합니다. 다음은 ShellExecute() 의 몇가지 사용예입니다. (1) 파일과 연관(association)된 프로그램으로 파일을 엽니다 ShellExecute(Handle, 'open', PChar('test.txt'), nil, nil, SW_SHOW); (2) notepad.exe 에 파라미터로 config.sys 파일을 주어 메모장을 실행합니다 ShellExecute(Hand..

API 2008.08.29

확장 dll 만들기 및 lib 파일 존재 이유

Lib 파일에 대한 존재 이유 DLL의 링크 호출하는 방법은 implicit 과 explicit 방법이 있는데 우선 여기선 조금쉬운 방법인 implicit방법을 먼저 하자 위에서 DLL을 만들때 같이 만들어 지는 lib를 이용한다. 여기서 lib에 대해 언급하면... 링크될때 링커는 이 lib파일을 표준 라이브러리 처럼 다루어 처리하지만, dll을 끌어오는 lib파일은 dll이 익스포트한 함수 각각에 대한 stub(함수 호출에 쓰이는 정보를 일컬음)만을 포함 함수 스텁은 사실 진짜 함수와 동일한 이름과 인수 리스트를 가진 pseudo 함수로서, 내부를 살펴보면 스텁에 필요한 모든 인수를 넘겨서 DLL에 들어있는 진짜 함수를 호출하는 짤막한 코드가 들어있다. 이렇게하면 DLL의 함수를 분리된 파일이 아니라..

API 2008.08.29

DLL 테스트할 샘플 코드 만들기 - 프로젝트 병합 살펴볼 것

DLL 테스트할 샘플 코드 만들기Code Story/Referance 2008/04/03 00:02 안녕하세요 ^^* 딸기우유 입니다. 이 포스트는 프로그래밍에 대해 직접 올리는 첫 포스트 입니다. 저도 포스트를 쓰며 공부했던 내용을 정리하고 누군가에게는 답답함을 시원하게 풀어주는 좋은 자료가 되기를 바랍니다. 그럼 시작해 보겠습니다. Visual C++ 6.0을 이용해 간단하게 DLL을 테스트하는 샘플 프로젝트를 만들어 보겠습니다. DLL(Dynamic Link Library)는 동적 연결 라이브러리 입니다. 동적 연결이란 것은 프로그램 내부에 라이브러리가 있는게 아니라 따로 외부에 있고, 필요할때 라이브러리를 로드 시켜서 사용하는 것입니다. 구조는 아래와 같이 진행 하겠습니다. DLL 프로젝트와 DL..

API 2008.08.29

스레드 V의 노트

- Thread - 귀가 닳도록 들어온 워커스레드와 UI스레드. 그리고 스레드와 관련된 숱한 의혹과 혼란은 간혹 프로그래밍 할 맛을 뚝 떨어뜨리기도 한다. 그러나 세상에 좋은걸 쉽게 얻을수 있는게 어디 있으랴. 보다 좋은 성능에 보다 매끄러운 결과물을 만들기 위해서는 피해갈수 없는 길이 스레드다. 그만큼 잘 쓰면 프로그램을 빛나게 하지만 잘못쓰면 그냥 망한다. 그리고 알아야 할것이 한두가지가 아니다. 이렇게 복합적인 지식을 요구하기 때문에 스레드가 어렵게 느껴질수 있다. 적어도 멀티스레드로 들어가기 시작하면... 그래서 기초책에서 설명하는 그렇고 그런 진부한 내용은 다 집어치우고, 또 잘 설명해 주지도 않는 UI 스레드도 제대로 알아볼겸 MFC에서 스레드가 어떻게 동작하는지 MFC 소스코드를 살펴보고 멀..

API 2008.08.15

- 윈도 프로그램의 시작과 끝. "Message" -

- 윈도 프로그램의 시작과 끝. "Message" - ------------------------------------------------------------ 지긋지긋한 추위속의 겨울이 한창입니다. 뜨거웠던 지난여름이 어제 같은데.. 정말 계절의 변화란 신기합니다. 저는 계절의 변화를 그림자의 길이로 가장 먼저 느끼는 버릇이 있습니다. 가령 그림자가 길어지면 겨울이 온다는걸 느끼죠. 햇빛의 입사각에 따라 계절의 분위기를 느끼는 건데 몇일전 정오를 약간 지난 시각에 봄의 분위기를 느낄수 있었습니다. 한창의 겨울은 곧 봄이 옴을 암시하기도 하는거죠. 프로그래머의 실력도 그렇지 않을까 합니다. 한참 능력의 한계에 숨이 턱턱 차오를때, 바로 그때가 한계단 올라서는 순간이 머지 않을때 이기도 하죠. ^_^; ..

API 2008.08.15

## SendMessage & PostMessage ##

## SendMessage & PostMessage ## 1. 기본적인 동작 방식 - 기본적으로 시스템에는 하나의 메시지큐가 있고, 또한 각 스레드 마다 메시지큐가 하나식 생긴다. - 스레드가 처음 생성될 시에는 메시지큐가 생성되지 않고, 메시지큐가 필요한 시점에서 생성된다. (메시지큐가 필요한 시점이란 메시지를 필요로 하는 관련 함수가 한번이라도 호출 되는 시점을 말한다..gdi함수 등..) - SendMessage의 경우 메시지큐를 거치지 않고 직접 윈도우 프로시저를 호출한다. - PostMessage의 경우 메시지큐에서 메시지를 받아와 순서대로 처리한다. (모든 메시지가 메시지큐에 차례로 들어가는 것은 아니다. 예를 들어 WM_PAINT의 경우 이미 메지시큐에 WM_PAINT가 있다면 뒤에 들어온 ..

API 2008.08.15

윈도우 프로시져

윈도우 프로시져 - 메시지 처리함수 - CALLBACK 함수 -> SendMessage로 간접 호출 - 재진입 가능 - WM_LBUTTONDOWN 처리 중에 WM_PAINT 처리 가능 - 가급적 지역 변수 사용 자제 큐메시지 - 주로 사용자의 입력으로부터 발생되는 메시지 비큐메시지 - 메시지 큐에 들어가지 않고 곧바로 윈도우 프로시저로 보내지는 메시지 - 대부분의 윈도우즈 메시지 시스템 메시지 큐 - 시스템 전체에 유일한 메시지 큐 쓰레드 메시지 큐 시스템 메시지 큐 -> 쓰레드 메시지 큐 -> 윈도우 프로시져 시스템은 쓰레드를 생성할 때 디폴트로 메시지 큐를 가지지 않는 쓰레드를 만든다. GetMessage(메시지, 윈도, 필터맥스, 필터민) - 메시지 큐에서 메시지 제거하고 TRUE 리턴 - WM_Q..

API 2008.08.15

함수,변수 표기법(헝가리안)

가급적 지켜주면 가독성이 좋다. 그러나 반복해서 자주 쓰이는 것은 간단한 소문자를 써서 간략하게 나타내는 게 좋을 듯 싶다. 가령 루프문에서 포인터는 그냥 p나 ptr로 표기하는 게 piNum이런 식으로 표기하는 것보다 나은 듯 하다. 함수,변수 표기법 ========================================= a 배열 b또는f BOOL형 변수(b=bool, f=flag) by BYTE형 변수 c 카운터로 사용되는 변수 ch char형 변수 cx, cy x, y길이를 나타내기 위해 사용 되는 변수 d 날짜형 변수 dbl 더블 형 변수 h 핸들 형 변수 n, i int 형 변수 l long형 변수 p 포인터변수 lp long형 포인터 변수 s 문자열 sz NULL 문자로 끝나는 문자열 u ..

API 2008.08.15