Всем доброго времени суток. Вопрос наверняка элементарный, но меня он ставит в тупик. Я создаю приложение Win32API в которое добавляю элемент управления Edit control и в которое стоит задача выводить информацию по открытым окнам на компе. Для сбора информации автор учебника предлагает мне воспользоваться классом string. Я, собственно, не против. Для этого я записываю в мою строку заголовок, который будет над всей дальнейшей информацией и потом к нему добавляю с помощью строчной (а может строковой) функции append() массив типа TCHAR и вот на этом этапе возникают траблы.
немного кода:Код | LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static std::string st("hProcess hParent idProcess hWindows\Title\r\n"); HWND hFind; static HWND hEdit; TCHAR str[1024]; TCHAR title[256]; LONG hProcess, hParentEdit; DWORD id; int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc;
switch (message) { case WM_CREATE: hEdit = CreateWindow(_T("Edit"), NULL, WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|ES_LEFT|ES_MULTILINE|ES_AUTOHSCROLL|ES_AUTOVSCROLL, 0, 0, 0, 0, hWnd, (HMENU) 1, hInst, NULL); break; case WM_SIZE: MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (LOWORD(wParam)) { case ID_FILE_FIND: hFind = GetTopWindow(NULL); do { hProcess = GetWindowLong(hFind, GWL_HINSTANCE); hParentEdit = GetWindowLong(hFind, GWL_HWNDPARENT); SendMessage(hFind, WM_GETTEXT, (WPARAM)256, (LPARAM)title); GetWindowThreadProcessId(hFind, &id); swprintf(str, _T("%.8x %.8x %.8d %.8x %s\r\n"), hProcess, hParentEdit, id, hFind, title); st.append(str); hFind = GetWindow(hFind, GW_HWNDNEXT); } while(hFind); SetWindowText(hEdit, (LPCWSTR)st.c_str()); // Тут ругалось на несоответствие типа требуемуму(LPCWSTR) st.c_str() break; case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
|
вот ошибки:
Цитата | Warning 2 warning C4129: ' ' : unrecognized character escape sequence c:\users\андрей\documents\visual studio 2010\projects\serchwindows\serchwindows\serchwindows.cpp 171 1 SerchWindows 6 IntelliSense: too few arguments in function call c:\users\андрей\documents\visual studio 2010\projects\serchwindows\serchwindows\serchwindows.cpp 173 18 SerchWindows 5 IntelliSense: no instance of overloaded function "std::basic_string<_Elem, _Traits, _Ax>::append [with _Elem=char, _Traits=std::char_traits<char>, _Ax=std::allocator<char>]" matches the argument list c:\users\андрей\documents\visual studio 2010\projects\serchwindows\serchwindows\serchwindows.cpp 173 7 SerchWindows Error 4 error C2664: 'std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::append(const std::basic_string<_Elem,_Traits,_Ax> &)' : cannot convert parameter 1 from 'TCHAR [1024]' to 'const std::basic_string<_Elem,_Traits,_Ax> &' c:\users\андрей\documents\visual studio 2010\projects\serchwindows\serchwindows\serchwindows.cpp 173 1 SerchWindows
|
|