-
CPropertieswnd에서의 데이터 입/출력Window Programming/Feature Pack 2008. 12. 7. 23:10728x90
PropertyWnd는 각 그리드의 값이 변경되면 AFX_WM_PROPERTY_CHANGED 메세지를 발생시킵니다.고로
ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED, &CPropertiesWnd::OnPropertyGridNotify)
위와 같이 해당 메세지가 발생하면 바로 함수를 호출하게 메세지맵에 등록하면 됩니다.
함수 이름은 뭐 맘에 드시는데로 하시면 되고요. 리턴형은 RESULT, 인자는 WPARAM과 LPARAM으로 받으시면 됩니다.
이중 LPARAM이 변경메시지가 발생한 CMFCPropertyGridProperty객체의 포인터입니다.
요놈을 조사하면 원하는 값을 변경할 수 있지요~^^
체크하는 방식은 이렇게~
CString str;
str.Format(TEXT("%s"),pProp->GetName());if ( str.Compare(TEXT("Left")) == 0) {
data = (CxArea*)pProp->GetData();//이건 프로퍼티 초기화할때 각 객체마다 SetData로 포인터 넘긴걸 받아오는 겁니다.
if (data == NULL) break;//예외처리~!!
_variant_t v = pProp->GetValue();//이건 변경되거나 수정된값!!
data->m_rc[0] = v;//v는 =연산자를 오버라이딩해서 텍스트값을 해당 변수형태로 캐스팅해줍니다.
}
보통 수같은 경우 위와 같이 처리하면 되는데 만약 DropList를 이용해서 변경할 경우는 따로 처리를 해줘야 합니다.variant_t v = pProp->GetValue();//그리드의 값을 얻고요.
std::wstring text = (LPCTSTR)(_bstr_t)v;//전 항상 유니코드로 작성하기에... 이런식으로 케스팅해줘야 합니다~^^
std::wstring option1 = TEXT("오른쪽열림");
if (text.compare(option1)==0) {
;//여기에서 GetData를 호출해 원하는 작업을 수행하시면 됩니다~^^
}
'Window Programming > Feature Pack' 카테고리의 다른 글
vcredist_x86 (27) 2008.12.07 Vusual c++ 2008 배포판 만들기 (0) 2008.10.21 Microsoft Visual C++ 2008 SP1 재배포 가능 패키지(x86) (2) 2008.10.21 [Feature pack] ClassView(트리 뷰) (0) 2008.10.16 Feature Pack관련 링크모음 (0) 2008.10.16