본문 바로가기

Programming/Tips(C++,C#)143

리스트 컨트롤관련 이슈.. 사용 불가능한 커서상태 -> 리스트 컨트롤의 스크롤바 영역이 선택 됨. 선택 안되도록 막을라면... PreTranslateMessage(MSG* Msg)에서.. 처리해야한다. 코드는 밑에와 같다. if( (pMsg->message == WM_LBUTTONDOWN) || (pMsg->message == WM_NCLBUTTONDOWN)){ //scroll bar 영역에는 NCLButtondown이 들어온다. Todo... } 여기서 커서를 비교하는 방법도 같이 나왔네... 사용불능 상태일때 (LoadCursor에서 IDC_NO일때) 아래와 같이 비교하면 된다. //커서를 가지고 오면 LoadCursor해서 비교하자. HCURSOR hCur = ::GetCursor(); if( hCur != NULL){ HC.. 2010. 7. 7.
AutoHScroll 설정된 CEdit에서 글자가 넘어갔는지 아는 방법 오늘 구글링 및 네이버를 이잡듯이(?) 뒤지다... AutoHScroll걸린 CEdit에서.. 글자가 넘어갔는지 알아내는 방법을 찾아냈다.. 바로 그 함수는 CPoint PosFromChar(int nIndex); 함수 MSDN의 내용은 다음과 같다 CPoint PosFromChar( UINT nChar ) const;Parameters nChar The zero-based index of the specified character. Return Value The coordinates of the top-left corner of the character specified by nChar. nIndex : 0부터 시작하는 CEdit안에 있는 문자열의 index. return value : 해당 nInde.. 2010. 6. 29.
대체 이건 왜이런 걸까? -_-.. BOOL 멤버변수.. 내 클래스에서.. MsgBox를 일정시간 이후에 띄워줘야 할 일이 있어서... 400ms 후에.. 띄워지도록 수정하였다.. (Timer 이용) 물론 그 400ms 사이에 MsgBox를 또 띄워달라고 메시지를 날리면 곤란해서... 중복해서 뜨지는 않도록 코드를 추가! 바로.. BOOL을 멤버변수로 넣어서... 이놈을 m_bIsPopup으로 정해주었다.. SetTimer할때.. m_bIsPopup에 따라 Timer를 보내주고 말고 하였다.. 물론 OnTimer에서는 저 m_bIsPopup의 값을 Toggle 해 주었지... 머.. 동작은 잘 되더라.. 근데 종료시에 꼭 죽더라.. -_-... 이 해결책이... 멤버로 가지고 있는 m_bIsPopup을... 전역으로 뺐다.. 잘돌아간다... 대체 이거 뭥미-_- 2010. 6. 14.
CComPtr을 사용하고나서.. 같은녀석을 loop로 여러번 돌려주니까.. item을 가져올 때.. 자꾸.. DebugAssert가 나더라.. 이유는 loop의 끝에서 release를 해주지 않아서 그럼.. 사용전 초기화, 사용후 정리는 필수인듯.. 2010. 5. 19.
ListCtrl에서 아이템 선택시 알아내기 //요기는 메시지 맵 -> ListCtrl을 가지고 있는 Dlg의 메시지 맵 ON_NOTIFY(LVN_ITEMCHANGED,IDC_RECIP_LIST,OnLvnItemchangedListItem) //이 함수를 만들어야한다 void 다이얼로그::OnLvnItemchangedListItem(NMHDR *pNMDHR, LRESULT *pResult){ LPNMLISTVIEW pNMLV = reinterpret_cast(pNMDHR); if( pNMLV && (pNMLV->uNewState == (UINT)(LVIS_FOCUSED | LVIS_SELECTED))){ int nAt = pNMLV->iItem; //nAt = 선택된 아이템임 //글자 얻어오기 char szText[128]; LVITEM item;.. 2010. 5. 12.
vsprintf -> vsprintf_s int vsprintf( char *buffer, const char *format, va_list argptr ); int vswprintf( wchar_t *buffer, const wchar_t *format, va_list argptr ); Parameters buffer Storage location for output. format Format specification. argptr Pointer to list of arguments. return value = 몇개의 글자가 write되었나? int vsprintf_s( char *buffer, size_t numberOfElements, const char *format, va_list argptr ); Parameters buffer St.. 2010. 3. 15.
728x90