Hello Jose
do you have a listView example code in Freebasic ?
especially one that can use your powerful WinFBX
appreciate all help, Thanxx
If you're using WinFBE, click the arrow in the first toolbar button to access the templates (see attached capture) and double click the wanted one.
Anyway, this is the code of one of them:
' ########################################################################################
' Microsoft Windows
' File: CW_COMMCTRL_ListView.fbtpl
' Contents: CWindow with a ListView
' Compiler: Free Basic
' Copyright (c) 2016 José Roca. Freeware. Use at your own risk.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#define UNICODE
#INCLUDE ONCE "Afx/CWindow.inc"
USING Afx
#define IDC_LISTVIEW 1001
DECLARE FUNCTION WinMain (BYVAL hInstance AS HINSTANCE, _
BYVAL hPrevInstance AS HINSTANCE, _
BYVAL szCmdLine AS ZSTRING PTR, _
BYVAL nCmdShow AS LONG) AS LONG
END WinMain(GetModuleHandleW(NULL), NULL, COMMAND(), SW_NORMAL)
' // Forward declaration
DECLARE FUNCTION WndProc (BYVAL hwnd AS HWND, BYVAL uMsg AS UINT, BYVAL wParam AS WPARAM, BYVAL lParam AS LPARAM) AS LRESULT
' ========================================================================================
' Main
' ========================================================================================
FUNCTION WinMain (BYVAL hInstance AS HINSTANCE, _
BYVAL hPrevInstance AS HINSTANCE, _
BYVAL szCmdLine AS ZSTRING PTR, _
BYVAL nCmdShow AS LONG) AS LONG
' // Set process DPI aware
AfxSetProcessDPIAware
' // Create the main window
DIM pWindow AS CWindow
pWindow.Create(NULL, "CWindow with a ListView", @WndProc)
pWindow.ClassStyle = CS_DBLCLKS ' // Change the window style to avoid flicker
pWindow.SetClientSize(565, 320)
pWindow.Center
' // Adds a listview
DIM hListView AS HWND
hListView = pWindow.AddControl("ListView", , IDC_LISTVIEW)
' // Add some extended styles
DIM dwExStyle AS DWORD
dwExStyle = ListView_GetExtendedListViewStyle(hListView)
dwExStyle = dwExStyle OR LVS_EX_FULLROWSELECT OR LVS_EX_GRIDLINES
ListView_SetExtendedListViewStyle(hListView, dwExStyle)
' // Add the header's column names
DIM lvc AS LVCOLUMNW, wszText AS WSTRING * 260
lvc.mask = LVCF_FMT OR LVCF_WIDTH OR LVCF_TEXT OR LVCF_SUBITEM
FOR i AS LONG = 0 TO 4
wszText = "Column " & STR(i)
lvc.pszText = @wszText
lvc.cx = pWindow.ScaleX(110)
lvc.iSubItem = i
ListView_InsertColumn(hListView, i, @lvc)
NEXT
' // Populate the ListView with some data
DIM lvi AS LVITEMW
lvi.mask = LVIF_TEXT
FOR i AS LONG = 0 to 29
lvi.iItem = i
lvi.iSubItem = 0
wszText = "Column 0 Row" + WSTR(i)
lvi.pszText = @wszText
ListView_InsertItem(hListView, @lvi)
FOR x AS LONG = 1 TO 4
wszText = "Column " & WSTR(x) & " Row" + WSTR(i)
ListView_SetItemText(hListView, i, x, @wszText)
NEXT
NEXT
' // Select the fist item (ListView items are zero based)
ListView_SelectItem(hListView, 0)
' // Set the focus in the ListView
SetFocus hListView
' // Dispatch Windows messages
FUNCTION = pWindow.DoEvents(nCmdShow)
END FUNCTION
' ========================================================================================
' ========================================================================================
' Main window callback procedure
' ================================================================e========================
FUNCTION WndProc (BYVAL hwnd AS HWND, BYVAL uMsg AS UINT, BYVAL wParam AS WPARAM, BYVAL lParam AS LPARAM) AS LRESULT
SELECT CASE uMsg
CASE WM_COMMAND
SELECT CASE GET_WM_COMMAND_ID(wParam, lParam)
' // If ESC key pressed, close the application sending an WM_CLOSE message
CASE IDCANCEL
IF GET_WM_COMMAND_CMD(wParam, lParam) = BN_CLICKED THEN
SendMessageW hwnd, WM_CLOSE, 0, 0
EXIT FUNCTION
END IF
END SELECT
CASE WM_SIZE
' // Resize the ListView control and its header
IF wParam <> SIZE_MINIMIZED THEN
' // Retrieve the handle of the ListView control
DIM hListView AS HWND = GetDlgItem(hwnd, IDC_LISTVIEW)
' // Retrieve a pointer to the CWindow class
DIM pWindow AS CWindow PTR = AfxCWindowPtr(hwnd)
' // Move the ListView control
IF pWindow THEN pWindow->MoveWindow hListView, 5, 5, pWindow->ClientWidth - 10, pWindow->ClientHeight - 10, CTRUE
END IF
CASE WM_DESTROY
' // End the application
PostQuitMessage(0)
EXIT FUNCTION
END SELECT
' // Pass unprocessed messages to DefWindowProc
FUNCTION = DefWindowProcW(hWnd, uMsg, wParam, lParam)
END FUNCTION
' ========================================================================================
Be aware that all my code is High DPI and unicode aware, and therefore, a bit more complex.
Thanxx a lot Jose
yes, i'm using the WinFBE together with your WinFBX , these are best combination for FB
in Windows
Hope Paul can also write an IDE for O2