블로그 이미지
인생의무한루프
인생에 무한루프.....

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Tag

Recent Post

Archive

Recent Comment

Recent Trackback

2008. 12. 15. 22:40 Appication/VC++_Control

글자 배경 바꾸기 2( MFC CEdit 예제 )

에디트에 대한 기초강좌를 마무리한 시점에서 질문이 하나 들어왔다..
지금까지의 내용을 기초로 에디트의 전체 배경을 바꾸었는데.. 깜빡이거나 먼가 이상하다...??

지난 강좌를 찾아보니, 에디트에 대한 배경 처리가 제대로 마무리 되지 못한 상태에서
강좌를 마쳐 혼란을 가져온것일 수 있을꺼 같아..
질문을 토대로 배경처리 기능을 마무리 하려고 한다.


위 그림은 두가지로 그 기능이 분류된다.

1. 왼쪽 에디트
-> 글자 바탕과 배경색상을 모두 녹색으로 처리한 것
2. 오른쪽 에디트
-> 글자 바탕은 TRANSPARENT 시키고, 바탕에는 HATCH 브러쉬를 뿌린것이다.

위 두가지 구현에는 다음과 같은 차이가 있다.
1번은 글자와 배경을 모두 그려주므로, 글씨를 쓸때 잔상이 남거나 깜빡임이 전혀없다.
2번은 글자는 쓰되 배경을 그려주지 않으므로 글씨를 쓸때 깜빡임은 없으나 잔상이 남는다.
이러한 이유로 두가지의 구현 부분에 조금 차이를 가지게 된다.

기본적인 코드는 브러쉬를 2개 만든다는 점만 빼고는 헤더에 추가할 내용은 없다.

BOOL CSssDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
   
    // 솔리드, 해치 브러쉬를 각각만든다.
    m_brush1.CreateSolidBrush(RGB(0, 255, 0));
    m_brush2.CreateHatchBrush(HS_DIAGCROSS, RGB(0, 255, 0));
   
    return TRUE; // return TRUE unless you set the focus to a control
    // EXCEPTION: OCX Property Pages should return FALSE
}

클래스 위저드에서 WM_CTLCOLOR 이벤트 핸들러를 추가한다.
HBRUSH CSssDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
   
    switch(nCtlColor)
    {
    case CTLCOLOR_EDIT:
        {
            pDC->SetTextColor(RGB(255, 0, 0));
           
            if(pWnd->GetDlgCtrlID() == IDC_EDIT1)
            {
                // 글자 바탕을 녹색으로 하고, 녹색 솔리드 브러쉬를 리턴한다.
                // 이게 전부다.

                pDC->SetBkColor(RGB(0, 255, 0));
               
return m_brush1;
            }
           
else if(pWnd->GetDlgCtrlID() == IDC_EDIT2)
            {
                // 글자의 배경을 그려주게 되면 바탕의 해치브러쉬 영역에 글자뒷 부분은
                // 녹색 사각형이 그려지게 된다.
                // 이를 막아주기 위하여, 배경그리는 기능을 제거한다. TRANSPARENT

                pDC->SetBkMode(TRANSPARENT);

                // 에디트 컨트롤 영역을 구한 후에
                // 브러쉬로 색칠해준다.

                CRect rc;
                GetDlgItem(IDC_EDIT2)->GetWindowRect(rc);
                ScreenToClient(rc);
                pDC->FillRect(rc, &m_brush2);

               
return m_brush2;
            }
        }
    }
    // TODO: Return a different brush if the default is not desired
   
return hbr;
   
}

클래스위저드에서 IDC_EDIT2의 EN_CHANGE 이벤트 핸들러를 추가한다.
이 핸들러를 추가하는 이유는 두번째 에디트는 글자의 배경이 뒤에 그려지는 해치 브러쉬의
패턴을 덥어쓰는 걸 막아주기 위하여 TRANSPARENT 속성을 주었으므로, 글씨의 뒷부분을
그려주지 않게된다. 그러므로 잔상이 남게되어 글자에 대한 변경이 발생하면
배경을 다시 그려주도록 하기 위해서이다.
void CSssDlg::OnChangeEdit2()
{
    CRect rc;
    GetDlgItem(IDC_EDIT2)->GetWindowRect(rc);
    ScreenToClient(rc);
    InvalidateRect(rc);
}




Posted by 까막백(홈페이지 이동)

posted by 인생의무한루프
2008. 12. 15. 22:20 Appication/VC++_Control

CColorDialog를 모달? 모달리스? 로 사용하기 ( MFC 모달리스 예제 )

칼라다이알로그 박스는 꼭 확인 버튼을 눌러야 색상을 얻어올 수 있습니다.
이걸 색상을 변경할 때마다 다이알로그를 닫지 않고도, 색상을 얻어올 수 있도록
수정하여 보았읍니다.

첫번째 아래그림은 그냥 색상을 선택해 본거구요..

사용자 삽입 이미지



아래 그림은 창을 닫지 않은 상태에서 다른색상을 선택해 본것입니다.
사용자 삽입 이미지






Posted by 까막백(홈페이지 이동)

posted by 인생의무한루프
2008. 12. 6. 21:41 일상 생활/잡동사니

드라이버(드라이브)를 자동으로 인식하여 다운로드.( 3DP Chip v.808 )

오랜만에 포맷을 하다보니 드라이버가 없어서 찾으려고 하다보니..
내 컴퓨터에 어떤 메인보드가 설치되어 있는지...그래픽카드는 먼지...이리저리 알아보고 찾아보고
하드웨어 정보를 알아내도 드라이버를 찾기는 쉽지 않네요..

그러다 괜찮은 프로그램을 하나 찾았습니다...^^

3DP Chip 라는 프로그램인데.....실행화일 하나로 되어 있어서 설치할 필요도 없고..
실행되면 지금 있는 하드웨어를 찾아내서 바로 드라이버 다운로드해 설치할수 있도록 도와줍니다..^^
단 CPU, 메인보드, 그래픽, 사운드 드라이버, 네트워크 드라이버만 지원합니다..
하지만 그게 어딥니까...중요한건 다 깔수 있습니다..ㅎㅎㅎ

다운로드 : 3DP_Chip_v808.exe (225.5KB)

사용법 : 사용법 보기

아래...exe를 다운로드해서 실행을 합니다...설치가 아닌 그냥 실행 화일이라 더 좋네요..^^
그럼 아래와 같은 프로그램이 실행됩니다...



위 프로그램에서 <드라이버>를 클릭하면 아래와 같이 드라이버를 다운로드 할수 있는 페이지가 열립니다..


친절하게 32bit XP 대부분의경우라고 적어놨네요...ㅎㅎㅎ
대부분은 저 아래부분을 드라이버를 다운로드 하여 설치하면 됩니다...
제 컴퓨터는 노트북이고 비스타라서 처음사서 XP로 다운그레이 할때 드라이버 찾기가
정말 힘들었는데(HP 홈페이지에도 없어서..-_-;;) 특히 그래픽드라이버는 정말 힘들었는데...
이 프로그램 덕분에 클릭 한두번에 금방 찾아 설치 할수 있게 해주네요...^_^
posted by 인생의무한루프
2008. 11. 30. 14:44 일상 생활/잡동사니

불펌 방지 해제 ( 드레그 복사 방지를 해제해 보자 )

요즘은 저작권 또는 자신이 적은 글이 인터넷상에서 아무나 가져가서 쓰이는 것을 방지하기 위해 여러 블러그에서는 드레그 복사나, 오른쪽 클릭등을 사용하지 못하게 하는 불펌 방지기능을 기본적으로 제공하고 있다. 
하지만 가끔 내가 원하는 소스를 찾았음에도 드레그 복사가 되지 않아 난감할때가 많았다....어떤이는 그냥 타이핑 하면 되지 않냐고 하지만.......;;;
많게는 몇십에서 몇백라인이 되는걸 치고 있을시간이면 차라리 동일한 소스중에 불펌방지가 안되어 있는 소스를 찾는게 더 빠른 일이라고 생각하고...실제로도 더 빨랐던거 같다...^^;;

난 혹시나 내 블러그도 그런기능이 걸려 있나 하고 해봤는데...내 글은 드레그와 오른쪽 클릭이 잘되어서 불펌방지가 안되어 있는줄 알았는데...그런데 어쩌다 내 아이디로 들어온게 아닌 외부에서 접근을 하니 그제서야 내 블러그도 불펌 방지가 되어 있는걸 알게 되었다......-_-;;;
그제서야 기본적으로 자신 아이디로는 불펌방지가 해제되었지만 다른 아이디로 접근하면 안된다는걸 알았다..
하지만 나 또한 어떤 글은 한개에 몇시간씩 걸려서 힘들게 적어야 하는데 그 글들을 누군가가 손쉽게 복사를 해서 출처도 밝히지 않은채 자기글 인양 블러그에 올려놓은걸 보게 된다면 기분이 그다지 좋을거 같지는 않다..그래서 불펌방지 기능을 해제하지는 않기로 했다.
따라서 기본적으로는 불펌 방지기능은 유지 하겠지만 내글을 필요로 하는 분들은 간단히 불펌을 해제해서 그때그때 필요한 부분만 복사해 가라는 의미에서 불펌 방지를 해제할수 있는 방법을 알려드리려고 한다.

일단 이 방법은 웹프로그래밍을 하는 후배가 알려준 방법으로 기본적으로 스크립트를 이용해 그 페이지에 스크립트 변수에 저장되어 있는 설정값들을 초기화 해버림으로서 사용제한을 푸는 방법이라고 한다.
또한 스크립트는 주소창에 적어줘도 동작을 하는 특성을 이용해 즐겨찾기에 추가하여 간편히 사용할수 있다.
하지만 간혹 안되는 세션등의 다른방법으로 불펌방지 기능을 구현한곳은 동작하지 않을 수도 있다..

서론은 길었지만 방법은 무척 간단하다.....ㅡ_ㅡ;;
우선 즐겨찾기에 추가를 눌러 즐겨찾기 페이지를 적당한 이름으로 만든다.


그런뒤 오른쪽 클릭후 속성을 눌러 등록정보를 열어 URL창에 아래 스크립트를 적어준다.

적어줄 스크립트 :
javascript:function r(d){d.oncontextmenu=null;d.onselectstart=null;d.ondragstart=null;d.onkeydown=null;d.onmousedown=null; d.body.oncontextmenu=null;d.body.onselectstart=null;d.body.ondragstart=null;d.body.onkeydown=null; d.body.onmousedown=null;}var tb=document.all.tags('BODY');if(tb.length==0) {for(var i=0;i< top.frames.length;i++){r(top.frames[i].document);}}else{r(document);}

그런뒤 사용하기 편하게 <연결> 폴더 안에 넣어서 사용하면 된다..^^;;
정말 간단하다..
아래사진은 불펌방지가 되어 있는 상태에서 불펌을 해본 테스트 사진이다..


불펌방지를 해제할수 있는 글을 적고는 있지만....다시한번 말씀드리지만 좀더 편리한 자료 참조를 위해서만 사용을 하시고 혹여라도 다른분이 힘들게 적은 자료를 그냥 불펌하기 위해서라면 자제하는게 좀더 현명하고 성숙한 블로거의 자세라고 생각한다.
posted by 인생의무한루프
2008. 11. 29. 00:51 Appication/프로그램 만들기

나만에 프로그램을 만들어보자.#3 ( NSIS 란 )

물론 아시는분들은 알겠지만 많은 분들이 프로그램은 만들어 놓고 설치파일은 어떻게 만드는지 고민을 하게 됩니다.
일전에 어떤 개발자분은 설치 파일도 vc로 개발을 하시는분을 봤습니다...
물론 나름대로의 익숙한 언어를 사용한다는건 많은 메리트를 가져오지만 전용툴을 사용하는 편리함과 개발시간이 줄어드는것 또한 많은 메리트가 있다고 생각됩니다..

일단 NSIS는 Winamp 제작사인 Null-Soft사에서 공개 프로그램을 위해 만든 OpenSource 입니다...지원해주는 기능도 강력하지만 NSIS의 꽃은 dll로 플러그인을 만들어 사용할수 있다는 것이라 생각됩니다.
물론 지금은 사용할 일이 있지는 않겠지만 차츰 배우다보면 정말 NSIS가 편리하고 강력한 툴이라고 생각하실 겁니다.

일단  NSIS 를 설치를 하세요...아래의 창이 뜰겁니다..


하지만 NSIS에서 지원하는 컴파일 기능으로는 좀 불편한게 있습니다...그래서 개발을 편리하게하는 툴을 하나 설치하는게 좋습니다..HM NIS Edit(NSIS 전용 에디터) 을 다운로드 받아서 설치하시면 됩니다..설치하는 과정에 에러가 나올수 있는데 그냥 무시무시 하세요...^_^
실행해 보시면 아래와 같은 창이 뜨실겁니다....이제부터 nsis는 이 에디트를 사용해서 컴파일 할것이니 nsis 파일 확장자인 .nsi 는 HM Edit로 연결을 해놓으시는게 편하실겁니다..^^



또한 위에 빨간색 박스에 들어있는 버튼들이 vc에 F7, F5 키와 동일한 기능을 하는 버튼들입니다...
앞으로 자주 사용하게 될겁니다..^^;;
일단 대략적인 셋팅은 이정도면 됬다고 생각이 되네요..

posted by 인생의무한루프