Какая-нибудь помощь с управлением заголовком ?
Ну, я никогда не делал этого раньше, я не получаю никаких ошибок, но я не вижу никакого элемента управления заголовком в моем приложении.
#if defined(UNICODE) && !defined(_UNICODE) #define _UNICODE #elif defined(_UNICODE) && !defined(UNICODE) #define UNICODE #endif #define _WIN32_IE 0x0300 #include <tchar.h> #include <windows.h> #include <commctrl.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); TCHAR szClassName[ ] = _T("Header Control"); HINSTANCE hInst; HWND hHeader; int ID_HEADER; /**********************************************************************************/ HWND DoCreateHeader(HWND hwnd) { HWND hHeader; RECT rcParent; HDLAYOUT hdl; WINDOWPOS wp; INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(INITCOMMONCONTROLSEX); icex.dwICC = ICC_LISTVIEW_CLASSES; InitCommonControlsEx(&icex); if((hHeader = CreateWindowEx(0, WC_HEADER, (LPCSTR)NULL, WS_CHILD | WS_VISIBLE | HDS_BUTTONS | HDS_HORZ | WS_BORDER, 0, 0, 0, 0, hwnd, (HMENU)ID_HEADER, hInst, (LPVOID)NULL)) = NULL); return (HWND)NULL; GetClientRect(hwnd, &rcParent); hdl.prc = &rcParent; hdl.pwpos = (&wp); if(!SendMessage((HWND)hHeader, HDM_LAYOUT, 0, (LPARAM)&hdl)) return (HWND)NULL; SetWindowPos(hHeader, wp.hwndInsertAfter, wp.x, wp.y, wp.cx, wp.cy, wp.flags | SWP_SHOWWINDOW); return(hHeader); } /**********************************************************************************/ int DoInsertItem(HWND hwnd, int iInsertAfter, int nWidth, LPTSTR lpsz) { HDITEM hdi; int index; hdi.mask = HDI_TEXT | HDI_FORMAT | HDI_WIDTH; hdi.cxy = nWidth; hdi.pszText = lpsz; hdi.cchTextMax = sizeof(hdi.pszText)/sizeof(hdi.pszText[0]); hdi.fmt = HDF_LEFT | HDF_STRING; index = SendMessage(hHeader, HDM_INSERTITEM, (WPARAM)iInsertAfter, (LPARAM)&hdi); return index; } /**********************************************************************************/ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { DoCreateHeader(hwnd); break; } case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } /**********************************************************************************/ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszArgs, int nCmdShow) { HWND hwnd; MSG messages; WNDCLASSEX exc; exc.cbClsExtra = 0; exc.cbWndExtra = 0; exc.hbrBackground = (HBRUSH)COLOR_BACKGROUND; exc.hCursor = LoadCursor(NULL, IDC_ARROW); exc.hIcon = LoadIcon(NULL, IDI_APPLICATION); exc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); exc.hInstance = hInst; exc.lpfnWndProc = WndProc; exc.lpszClassName = szClassName; exc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; exc.cbSize = sizeof (WNDCLASSEX); exc.lpszMenuName = NULL; if(!RegisterClassEx(&exc)) return 0; hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, szClassName, _T("Header Control"), WS_OVERLAPPEDWINDOW, 350, 130, 700, 500, HWND_DESKTOP, NULL, hInst, NULL) ; ShowWindow(hwnd, nCmdShow); while(GetMessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; }
Что я уже пробовал:
Пока ничего.. :\
Я смотрю прямо сейчас, если что-то упущу...
Пожалуйста, помогите!
Richard MacCutchan
Пожалуйста, не просто сбрасывайте свой код и не ждите, что мы выясним, в чем ваша проблема. Используйте Улучшить вопрос ссылка выше и добавьте соответствующие сведения о том, что не так, включая любые сообщения об ошибках.
M@gelearn
Сожалеть об этом.. Я не говорил, что у меня есть ошибки, если вы хорошо прочитали сообщение.. люди сегодня злятся, потому что у них есть своя проблема, и они не хотят других, это не значит, что кто-то должен расстраиваться, я не ожидаю, что кто-то решит мою проблему, кому скучно с таким простым кодом, просто игнорируйте меня, я не на вашем уровне. Если кто-то хочет заставить меня понять, что я сделал не так или, может быть, я что-то упустил, благослови его. Я сказал, что скопировал ту же ссылку, и я не получаю никаких ошибок, мое окно появляется, я просто не вижу никакого элемента управления заголовком. Это все
Большое вам спасибо за помощь..
0x01AA
Но похоже, что вы скопировали откуда-то несколько строк кода и не понимаете их, а теперь ожидаете, что этот форум объяснит вам код...
Richard MacCutchan
Я действительно сказал "любые сообщения об ошибках", потому что ваш вопрос был неясен, поэтому я понятия не имел, что происходит, когда вы запускаете свой код. Я не знаю, откуда вы получаете свои образцы, но большинство примеров кода на веб-сайте документации Microsoft действительно работают так, как указано в списке.