저는 Windows 프로그래밍의 초보자이며 계속해서 여러 가지 문제를 겪고 있습니다. 그 중 대부분은 혼자서 해결할 수있었습니다.C++ win32 편집 상자 커서 깜박임이 없습니다.
내 문제는 텍스트 영역에 표시된 캐럿 (또는 커서)입니다. 텍스트를 입력하는 위치를 나타내는 것? 글쎄, 최소한 보여 주지만 그것이해야하는 것처럼 깜박이지는 않습니다. 편집 상자에 관한 모든 코드
case WM_CREATE:
{
if(!logged) {
HWND userField = CreateWindow(
"EDIT", // Predefined class; Unicode assumed
NULL, // Button text
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT, // Styles
C_WIDTH/2 - 80, // x position
C_HEIGHT - 240, // y position
160, // Button width
25, // Button height
hwnd, // Parent window
NULL, // No menu.
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
NULL); // Pointer not needed.
// initialize NONCLIENTMETRICS structure
NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(ncm);
// obtain non-client metrics
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0);
// create the new font
HFONT hNewFont = CreateFontIndirect(&ncm.lfMessageFont);
// set the new font
SendMessage(userField, WM_SETFONT, (WPARAM)hNewFont, 0);
}
}
break;
:
나는과 같이 WM_CREATE에서 만든 편집 상자가 있습니다. 내가 충분히 명확하지 않거나 코드의 공급이 부족하다면 미안합니다. 여기에 어떤 코드 부분이 관련되어 있으며 무엇이 관련이 있는지 알 수 없습니다. 나는 내 전체 코드를 붙여야한다고 생각하지 않는다.
문제는 텍스트 상자 (userField)의 캐럿이 깜박이지 않는다는 것입니다.
필요한 경우 자세한 내용을 문의하십시오.
유니 코드는 btw로 간주하면 안됩니다.이 코드가 작성된 방식은 'CreateWindowA'를 호출하는 것과 같습니다. ANSI 버전 유니 코드 버전은 첫 번째 매개 변수로'LPCWSTR'을 취하고,'LPCSTR'을 전달합니다. 나는 대단히 ** 당신이 VS를 사용하고 있거나 UNICODE와 _UNICODE 둘 다 정의하지 않았다면 유니 코드로 설정된 문자 세트를 가지고 있는지 확인하는 것이 좋습니다. – Mgetz
오, 그게 그게 전부 였어. 나는 VS2012에서 VS2013으로 업그레이드했고 갑자기 모든 "문자열"이 잘못되어 "문자열"로만 변경해야했습니다. 내 전처리 정의에 UNICODE와 _UNICODE를 모두 추가했는데 모든 것이 정상으로 돌아갔습니다. –
수동으로 할 필요는 없습니다. VC++ 프로젝트 설정을 확인해야합니다. 아마도 MBCS – Mgetz