int ListView_SetCurSel (HWND hwnd , int pos) { ListView_Deselect(hwnd); ListView_SetItemState(hwnd , pos , LVIS_SELECTED , LVIS_SELECTED); ListView_SetSelectionMark(hwnd , pos); ListView_SetHotItem(hwnd , pos); ListView_EnsureVisible(hwnd , pos , 0); return 1; }
// // FUNCTION: WndProc(HWND, unsigned, WORD, LONG) // // PURPOSE: Processes messages for the main window. // // WM_COMMAND - process the application menu // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_TIMER: g_console.OnMessage(CMSG_REFRESH, NULL); break; case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR)lParam; if(pnmh) { if(pnmh->hwndFrom == m_WndNetworks) { // message from the list view if(pnmh->code == LVN_ITEMCHANGED) { LPNMLISTVIEW lpn = (LPNMLISTVIEW)pnmh; g_selected_item = lpn->iItem; ListView_GetItemText(m_WndNetworks, lpn->iItem, 0, g_ip_address, 1022); ListView_SetHotItem(m_WndNetworks, g_selected_item); } } else if(pnmh->hwndFrom == m_WndFoundObjects) { // message from the list view if(pnmh->code == LVN_ITEMCHANGED) { LPNMLISTVIEW lpn = (LPNMLISTVIEW)pnmh; } } else if(pnmh->hwndFrom == m_WndTab) { if(pnmh->code == TCN_SELCHANGE) { int iSel = TabCtrl_GetCurSel(m_WndTab); switch(iSel) { case 0: ShowWindow(m_WndFoundObjects,SW_HIDE); ShowWindow(m_WndNetworks,SW_SHOWNORMAL); break; case 1: ShowWindow(m_WndNetworks,SW_HIDE); ShowWindow(m_WndFoundObjects,SW_SHOWNORMAL); break; default: TRACE0("error, tab number not implemented!"); break; } } } } } break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case ID_SERVER_STARTSERVER: if(g_console.m_ServerEngine) { MessageBox(hWnd, "Server is already running", "Error", MB_OK); } else if(IDOK == DialogBox(hInst, (LPCTSTR)IDD_DIALOG_SERVER, hWnd, (DLGPROC)ConfigServer)) { g_console.OnMessage(CMSG_STARTSERVER, NULL); } break; case ID_SERVER_STOPSERVER: g_console.OnMessage(CMSG_STOPSERVER, NULL); break; case ID_PEER_ADDPEER: if(IDOK == DialogBox(hInst, (LPCTSTR)IDD_DIALOG_IP, hWnd, (DLGPROC)ConfigIP)) { g_console.OnMessage(CMSG_ADDPEER, NULL); } break; case ID_PEER_REMOVEPEER: g_console.OnMessage(CMSG_REMOVEPEER, NULL); break; case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)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; }
static VOID InitLangList(HWND hWnd, HIMAGELIST hImgList) { HKEY hKey, hSubKey; TCHAR szBuf[MAX_PATH], szPreload[CCH_LAYOUT_ID + 1], szSub[CCH_LAYOUT_ID + 1]; LAYOUT_ITEM lItem; DWORD dwIndex = 0, dwType, dwSize; LV_ITEM item = {0}; HWND hList = GetDlgItem(hWnd, IDC_KEYLAYOUT_LIST); INT i, imgIndex; item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE; if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Preload"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) { dwSize = sizeof(lItem.ValName); while (RegEnumValue(hKey, dwIndex, lItem.ValName, &dwSize, NULL, &dwType, NULL, NULL) == ERROR_SUCCESS) { dwSize = sizeof(szPreload); RegQueryValueEx(hKey, lItem.ValName, NULL, NULL, (LPBYTE)szPreload, &dwSize); lItem.LangId = (LANGID)_tcstoul(szPreload, NULL, 16); GetLocaleInfo(lItem.LangId, LOCALE_SISO639LANGNAME, (LPTSTR)szBuf, sizeof(szBuf) / sizeof(TCHAR)); lstrcpy(lItem.IndName, _tcsupr(szBuf)); imgIndex = ImageList_AddIcon(hImgList, CreateLayoutIcon(lItem.IndName)); GetLocaleInfo(lItem.LangId, LOCALE_SLANGUAGE, (LPTSTR)szBuf, sizeof(szBuf) / sizeof(TCHAR)); lstrcpy(lItem.LangName, szBuf); // Does this keyboard layout have a substitute? // Then add the substitute instead of the Layout ID if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0, KEY_QUERY_VALUE, &hSubKey) == ERROR_SUCCESS) { dwSize = sizeof(szSub); if (RegQueryValueEx(hSubKey, szPreload, NULL, NULL, (LPBYTE)szSub, &dwSize) == ERROR_SUCCESS) { lstrcpy(szPreload, szSub); } RegCloseKey(hSubKey); } GetLayoutName(szPreload, lItem.LayoutName); item.pszText = lItem.LangName; item.iItem = (INT) dwIndex; item.lParam = (LPARAM)_ttoi(lItem.ValName); item.iImage = imgIndex; i = ListView_InsertItem(hList, &item); ListView_SetItemText(hList, i, 1, lItem.LayoutName); dwIndex++; if (lstrcmp(lItem.ValName, _T("1")) == 0) { (VOID) ListView_SetHotItem(hList, i); } } RegCloseKey(hKey); } }