GSI

CXImage 연동 라이브러리.

C++ 2007. 12. 3. 18:09 |

CxImage 라이브러리 폴더를 해당 프로젝트에 추가 한다.

1. 인클루드를 추가한다.

#include "./CXImage599_Lib/ximage.h"
#pragma comment(lib, "./CXImage599_Lib/cximaged.lib")

2. 해당 경로명의 확장자(이미지 타입)을 얻어 오는 함수를 추가한다.

// CDlgSequencePage 메시지 처리기입니다.
int GetTypeFromFileName(CString& str)
{
 CString fileName = str;
 CString ext3=fileName.Right(3);
 CString ext4=fileName.Right(4);
#if CXIMAGE_SUPPORT_PNG
 if(ext3.CompareNoCase(_T("png"))==0)
  return CXIMAGE_FORMAT_PNG;
#endif
#if CXIMAGE_SUPPORT_BMP
 else if(ext3.CompareNoCase(_T("bmp"))==0)
  return CXIMAGE_SUPPORT_BMP;
#endif
#if CXIMAGE_SUPPORT_JPG
 else if(ext3.CompareNoCase(_T("jpg"))==0)
  return CXIMAGE_SUPPORT_JPG;
#endif

 return CXIMAGE_FORMAT_UNKNOWN;
}

3. 이미지 읽어 오는 함수를 추가한다.

CxImage* CDlgProgrammingPage::GetImage(CString& strPath)
{
 int nImageType=GetTypeFromFileName(strPath);
 if(nImageType==CXIMAGE_FORMAT_UNKNOWN) {
  MessageBox("해당 파일을 읽을 수 없습니다.", "에러", MB_OK);
  return NULL;
 }

 CxImage* pImg = new CxImage(strPath, nImageType);

 if(pImg->IsValid() == false) {
  delete pImg;

  MessageBox("해당 파일을 읽을 수 없습니다.", "에러", MB_OK);
  return NULL;
 }

 return pImg;
}

관련 라이브러리 :

Posted by gsi
:

    public partial class UserControl1 : UserControl
    {
        public static DependencyProperty InputTextProperty;

        public UserControl1()
        {
            InitializeComponent();
       
            //
            InputTextProperty = DependencyProperty.Register("InputText", typeof(string),
                            typeof(UserControl1),
                            new FrameworkPropertyMetadata("none", new PropertyChangedCallback(OnInputTextChanged)));
        }

        public string InputText
        {
            set { SetValue(InputTextProperty, value); }
            get { return (string)GetValue(InputTextProperty); }
        }
         
        private void OnInputTextChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            TextBlock tb = this.FindName("txtShow") as TextBlock;

            tb.Text = InputText;
        }
    }

관련코드 :

Posted by gsi
:

컨트롤의 특정 부분을 사용해서 타이틀바로 인식하게 하고 싶을때가 있습니다.
그럴때는 아래와 같은 코드를 사용하면 됩니다.

void CDlgTest01::OnLButtonDown(UINT nFlags, CPoint point)
{
 CDialog::OnLButtonDown(nFlags, point);
 TRACE2("mousepos : %d, %d\n", point.x, point.y);
 PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKEWPARAM(point.x, point.y));
}

이거 말고 Static 컨트롤을 사용해서 클릭 이벤트를 추가 하고 캡션 처리는 아래와 같이 하면 되는거 같네요.

우선 Dialog에 Static 컨트롤을 추가 하고 그 컨트롤을 사용해서 처리 해줄때
Static의 "IDC_STATIC_CAPTION" 이벤트 함수를 추가 했습니다.
하지만 해보면 이 이벤트 함수는 호출이 되지 않는데요.
왜냐 하면 스타일에 "SS_NOTIFY"가 없어서 그렇습니다.

BOOL CDlgTest01::OnInitDialog() 함수 안에 아래의 코드를 추가 합니다.

GetDlgItem(IDC_STATIC_CAPTION)->ModifyStyle(0, SS_NOTIFY);

이제 디버깅을 해보시면 호출이 되는걸 확인할 수 있습니다.

마지막으로 작업해 주어야 하는 부분이
마우스 위치를 얻어와서 PostMessage를 호출해 주면 됩니다.

void CDlgTest01::OnStnClickedStaticCaption()
{
 CPoint mousePos;
 GetCursorPos(&mousePos);
 ScreenToClient(&mousePos);
 //TRACE2("Edit mousepos : %d, %d\n", mousePos.x, mousePos.y);

 PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKEWPARAM(mousePos.x, mousePos.y));
}

Posted by gsi
:

사용자 삽입 이미지


슬라이더 형태의 특정한 수치 정보를 담고 있다.
마우스로 바의 내부를 클릭 하면 해당 위치까지 녹색의 바가 에니메이션 플레이 되면서 움직인다.

아래의 설정값은 시작과 끝의 지점을 알려 준다.

조금 고쳐야 할 것은 있지만. 우선 이걸로 써야 할듯 하다.

관련코드 :
Posted by gsi
:

[WPF] 마우스 이벤트

WPF 2007. 11. 29. 13:27 |

마우스 이벤트에 대해서..

객체가 있을때 마우스 이벤트를 사용해서 많은 기능을 처리해줘야 한다.

공부 하면서 알게된 내용을 적을려고 한다.

예를 들어서

Grid
   > Rectangle

이와 같은 객체가 있다고 가정하겠다.
그리고 마우스 이벤트는 Grid에 생성한다.
MouseLeftButtonUp 이벤트를 생성했을때 아래와 같은 함수가 생성되게 된다.

private void OnGridLButtonUp(object sender, MouseButtonEventArgs e)
{

여기서 sender는 Grid를 의미 하며, e는 마우스의 각종 상황들에 대한 정보를 가지고 있는다.

내가 여기서 해주고자 했던건 Grid의 내부 마우스 클릭 위치값을 가져 오기 위함이기 때문에
아래와 같은 작업을 해주었다.

마우스의 위치를 얻어 오기 위해서
Point pt = e.GetPosition((Grid)sender);
이런 구문을 사용했다.

GetPosition에는 현재 선택된 객체를 인자로 넘겨 주게 되면 그 객체에 대한 로컬 위치값이
나오게 되는거 같다.
Posted by gsi
: