에디트컨트롤 비밀번호 속성시 툴팁 안나오게 하기
How to Disable Password EditCtrl Tooltip on CAPS LOCK ON
ES_PASSWORD 가 들어간 비밀번호 속성의 에디트컨트롤이 XP이상(6.0,WINVER 0X0501) 에서 시스템 디폴트로,대문자 키가 눌린경우엔 무조건 툴팁이 나오게 되어 있다. 이것은 오히려 사용자가 입력하려 할때 참 번거롭도록 활성화가 된다. 이것을 찾으려 하니 코드구루에도 코드프로젝트에도 없길래, 필요한 분이 보도록 이곳에 이에 대한 방법을 적고자 함..자 , 이 귀찮은 툴팁을 없애 보도록 하자.
출처:나(http://krkim.net)
우선 CAPS LOCK이 눌리고 ES_PASSWORD 속성을 가진 EDIT 가 SETFOCUS 활성화 되거나,이미 포커스가 있은채 나중에 CAPS LOCK이 눌리면 이 툴팁은 여지없이 뜨며 그때 윈도우 시스템 으로부터 EM_SHOWBALLOONTIP 메세지가 해당 EDIT Control에 보내지게 된다.
즉,서브클래싱 하여 이 메세지를 가로채어 이 메세지가 윈도우 시스템의 기본적인 Window Procedure 로 가지 못하도록 하면 된다.
WNDPROC oldEditWndProc = 0;
OnInitDialog에 다음을 기술한다.
oldEditWndProc = (WNDPROC)(LONG_PTR)::SetWindowLongPtr(::GetDlgItem(m_hWnd,IDC_PASS),
GWLP_WNDPROC,(LONG_PTR)(WNDPROC)(EditWindowProc));
/* Edit_HideBalloonTip(::GetDlgItem(m_hWnd,IDC_PASS));*/
LRESULT CALLBACK EditWindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
LRESULT lReturn = 0L;
if(message == EM_SHOWBALLOONTIP){//SHOWBALLOONTIP를 무시하도록 한다.
return 0;
}
//return ::DefWindowProc(hWnd,message,wParam,lParam);
lReturn = CallWindowProc((WNDPROC)oldEditWndProc,hWnd,message,wParam,lParam);
return lReturn;
}
'C | C++ | VC++' 카테고리의 다른 글
Rebar Band가 우측으로 align 되는 현상 (0) | 2010.08.31 |
---|---|
투박한 윈도우즈7의 메뉴,툴바를 바꿔보자! (0) | 2010.07.27 |
Visual Leak Detector - vld의 Bug (0) | 2010.07.09 |
[두루에디트 제작기] 정규식(Regular Expression) 검색 구현 (0) | 2010.07.09 |
[두루에디트 제작기] 쓰레드 검색처리시 입력장치공유 (0) | 2010.07.09 |