전체 글 1043

PlaySound 함수 이용 소리 내기.

효과 소리를 내기 위해서 PlaySound API를 이용합니다. function PlaySound(pszSound: PChar; hmod: HMODULE; fdwSound: DWORD): BOOL; stdcall; MMSystem 유닛에 위와 같이 정의되어 있습니다. 첫번재 파라미터 pszSound 는 효과 소리 파일에 대한 별명 / 리소스 아이디 / 파일명이 옵니다. 두번째 파라미터 hmod 는 별명이나 파일명인 경우, 0을 넣고 리소스인 경우 해당 리소스인 인스턴스 핸들을 넘겨줍니다. 세번째 파라미터 fdwSound에는 다음과 같은 파라미터가 올 수 있습니다. SND_SYNC = $0000; { play synchronously (default) } SND_ASYNC = $0001; { play as..

[GR32] 다각형 영역만 클립보드로 복사하기

공개 패키지 Graphics32 1.8 버전이 새로 나왔습니다. 이를 기존 프로젝트에 적용하였더니, 한군데서 오류가 발생하였습니다. 이미지의 Interpolate를 처리하기 위한 필터가 클래스 형태로 변경되었습니다. 기존 코드(1.7) FBuffer32.StretchFilter=sfLinear; 신규 코드(1.8) TLinearResampler.Create(FBuffer32); 이런식으로 적용하였더니, 바로 그대로 사용 가능하였습니다. 1.7 버전의 ImgView에 있던 레이어의 확대 버그가 1.8에서는 해결된것 같습니다. 다각형 영역만 클랩보드로 복사하는 것은 Examples의 Sprites 예제를 응용하면 됩니다. 다음 코드는 Sprites 예제의 생성자 코드의 일부입니다. procedure Load..

브라우저를 포함한 창의 크기를 HTML 소스에 따라 자동 조정하기

서론 델파이 프로그램을 만들다 보면 공지사항 팝업창의 경우 일일이 컴포넌트를 배치하여 프로그래밍 하는 것 보다는 손쉽게 HTML로 화면을 제적하고, 폼 안에 브라우저를 넣어서 필요한 화면을 HTML로 보여줄 경우가 있습니다. 이런 경우, 팝업 형태의 폼을 한 만들고 TWebBrowser나 TEmbeddedWB 컴포넌트를 위로 올려서 디자인된 HTML 화면 크기에 맞도록 ClientWidth, ClientHeight 값을 조정하여 하곤 하였습니다. 하지만, 이런 식으로 작업을 하게 되면 팝업 창으로 표시할 각 HTML 내용들이 모두 같은 크기라면 문제가 없지만, 서로 다른 크기라면 그 각각의 경우를 위하여 프로그램 소스에서 직접 ClientWidth, ClientHeight를 따로따로 코딩해 주어야 하고,..

WM_SYSCOMMAND로 NONCLIENT 영역의 마우스 동작 흉내내기

WM_SYSCOMMAND 메시지로 윈도우 폼의 타이틀 바가 아닌 클라이언트 영역에서 마우스를 눌렀을 때, WM_MOUSEDOWN 메시지에서 WM_SYSCOMMAND의 WParam으로 $F012를 보내면, 폼을 이동시키는 효과를 그대로 낼 수 있습니다. 보통 SC_CLOSE 등 미리정의된 상수가 있지만, 아래 값들은 상수로 정의되어 있지 않아서 WParam으로 직접 넣어 주면 됩니다. $F001 : 우측 고정 넓이 조절 $F002 : 좌측 고정 넓이 조절 $F003 : 하단 고정 높이 조절 $F004 : 우하단 고정 전체 크기 조절 $F005 : 좌하단 고정 전체 크기 조절 $F006 : 상단 고정 높이 조절 $F007 : 우상단 고정 전체 크기 조절 $F008 : 좌상단 고정 전체 크기 조절 $F009,..

판타스틱 4 - 실버 서퍼의 위협 (Fantastic Four: Rise Of The Silver Surfer)

선거를 마친후, 뭘할까 고민을 하다가 영화나 보자해서 보게 되었습니다. 오랫만에 판타지 액션을 보고자 영화를 고르다 보니, 예전에 나왔던 실버서퍼의 위협이 문득 땡기더군요. 아무런 생각없이 그냥 영화를 봐서 그런지 몰라도 나름 재미나게 보았습니다. 미국적인 요소가 많은 영화. 자신의 존재를 숨긴채 홀로 악당과 맞서 싸우는 영웅의 모습은 이제 자취를 감추고, 영웅이 보통사람과 함께 살아가는 세상을 그리는... 그러나 그런 영웅들의 모습이 다소 어색하게 느껴집니다. 평범하지 않은 능력을 갖은 이의 평범하고자 하는 심적 갈등을 그리려 한 부분도 있지만, 공감은 제로... 마지막에 우주 공간을 떠도는 실버서퍼는 능력은 좀 감소되어 다시 살아날듯 싶군요. 3탄에서는 어떤 능력자가 나올지... 궁금하군요... 장르..

취미/영화보기 2007.12.21

문자열에서 숫자만 추출하는 함수

문자열에서 숫자만 추출하는 경우가 생겨 함수로 한번 만들어 봤습니다. 문자열 데이터에서 숫자(소수점 포함)만 추출합니다. 추출한 문자열을 StrToFloatDef 함수 등을 이용하여 숫자형으로 변환할 수 있습니다. function ExtractNumeric(const strData: string): string; var i, nLen: integer; p, d: PChar; begin nLen := Length(strData); SetLength(Result, nLen); p := @strData[1]; d := @Result[1]; for i := 0 to nLen - 1 do begin if (p^ in ['0'..'9', '.', '-']) then begin d^ := p^; inc(d); end..

TEdit에서 Alignement 처리하기.(왼쪽/가운데/오른쪽 정렬)

TLabel 등에는 TAlignment 속성이 있어서 정렬 처리가 가능합니다. 하지만 TEdit에는 TAlignment 관련 속성이 없습니다. 이를 처리하기 위해서 GetWindowLong 및 SetWindowLong Windows API를 이용합니다. TEdit는 윈도우의 기본 내장 클래스인 edit 컨트롤을 래핑해 놓은 것으로 다음과 같은 스타일을 적용할 수 있습니다. { Edit Control Styles } {$EXTERNALSYM ES_LEFT} ES_LEFT = 0; {$EXTERNALSYM ES_CENTER} ES_CENTER = 1; {$EXTERNALSYM ES_RIGHT} ES_RIGHT = 2; {$EXTERNALSYM ES_MULTILINE} ES_MULTILINE = 4; {$EX..

인생에 리허설은 없다

저자가 살아오면서 모아온 격언들과 재미난고 교훈적인 이야기들을 각 주제별로 엮어 놓은 책입니다. 살면서 현재의 처지가 갑갑하게 느껴지거나, 힘들때 이책을 읽으며 마음의 위안을 삼고, 좀더 최선을 다해 미래를 준비할 수 있을 것 같습니다. 지금 기억에 남는 이야기... 대상인의 네 자식에게 어렸을 때, 놀이의 즐거움을 알려주기 위해서 잠자리를 잡아오라고 했던 이야기가 생각나는군요. 멋진 반전이... 이 이야기를 읽으며 대상인이라서 아이들에게서 상인의 자질을 기대하는 것인줄로만 알았었는데, 결론은 그게 전혀 아니었습니다. ^^; 우리 세대들도 아이들에게 아이답지 않은 것들을 요구하고 있는건 아닌지 반성해 봅니다. "자신에게 엄격하되 남에게는 관대한 것이 수양의 최고 경지이다."는 문구도 기억에 남는군요. 염..

취미/책읽기 2007.12.17

802.11n

‘802.11n'은 기존 무선랜인 802.11a/b/g 방식의 최고 속도인 54Mbps보다 최대 11배(600Mbps), 최소 2배(100Mbps) 속도를 지원하고, 고해상도 HDTV를 끊기지 않게 전송할 수 있다. 또, 다중입출력(MIMO) 시스템을 도입해 여러 개의 안테나를 통해 여러 신호를 한꺼번에 송수신 할 수 있는 기술이다. 802.11n 기술을 도입하면 유선인터넷처럼 무선에서도 700MB 정도되는 CD 1장 분량의 영화 한 편을 단 1분 안에 다운로드 받거나 불과 3~4초만에 MP3 파일을 전송할 수 있는 100Mbps급 초고속 시대가 열리게 된다. 특히 TV에서 고화질 콘텐츠를 가정 내 곳곳에서 자유로이 무선으로 전송할 수도 있고, 강의실에서는 20여명이 동시에 무선랜에 접속할 수 있게 된다..

낙서장 2007.12.12
728x90