All pastes #103301 Raw Edit

napa3um

public text v1 · immutable
#103301 ·published 2006-07-28 07:38 UTC
rendered paste body
//------------------------------------------------------- treeselect.h
#pragma once
#include "Platform.h"

typedef struct tagTREESELECT 
{
//in:
	WCHAR wszTitle[32];
	LPSAFEARRAY lpArray;
//out:
	long lSelected;
} TREESELECT, *LPTREESELECT;

BOOL TreeSelect(LPTREESELECT);




//------------------------------------------------------- treeselect.c
#include "Platform.h"
#include "App.h"
#include "TreeSelect.h"

INT_PTR CALLBACK TreeSelectDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ 
	static LPTREESELECT lpParam;
	static HWND hTree;
	switch(uMsg)
	{
	case WM_INITDIALOG:
		{
			HTREEITEM *lpItems;
			LONG lColsCount;
			LONG lRowsCount;
			TVITEM tvi; 
			TVINSERTSTRUCT tvins;
			BOOL bNeedInsert = TRUE;
			LONG i, j;

			hTree = GetDlgItem(hWnd, IDC_TREE);
			lpParam = (LPTREESELECT)lParam;
			SetWindowText(hWnd, lpParam->wszTitle);

			SafeArrayGetUBound(lpParam->lpArray, 1, &lColsCount);
			lColsCount ++;
			SafeArrayGetUBound(lpParam->lpArray, 2, &lRowsCount);
			lRowsCount ++;

			lpItems = GlobalAlloc(LPTR, sizeof(HTREEITEM)*lRowsCount);

			while(bNeedInsert)
			{
				bNeedInsert = FALSE;
				for(i = 0; i < lRowsCount; i++)
				{
					if(!lpItems[i])
					{
						tvi.mask = TVIF_TEXT | TVIF_PARAM;
						tvi.cchTextMax = 256;
						tvins.item = tvi;
						tvins.hInsertAfter = TVI_LAST;

						tvi.pszText = L"TEST";//((VARIANT*)lpParam->lpArray->pvData)[i*lColsCount + 2].bstrVal;
						tvi.lParam = (LPARAM)i;
						tvins.hParent = TVI_ROOT;
						lpItems[i] = TreeView_InsertItem(hTree, &tvins);
						bNeedInsert = TRUE;
					}
					continue;
				}
			}
			GlobalFree(lpItems);
			return 0;
		}
	case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
			case IDOK:
				{
					EndDialog(hWnd, IDOK);
					return 0;
				}
			case IDC_CLEAR:
				{
					lpParam->lSelected = -1;
					EndDialog(hWnd, IDOK);
					return 0;
				}
			case IDCANCEL:
				{
					EndDialog(hWnd, IDCANCEL);
					return 0;
				}
			}
			return -1;
		}
	}
	return 0;
}


BOOL TreeSelect(LPTREESELECT lpParam)
{
	return DialogBoxParam(lpApp->hInstance, MAKEINTRESOURCE(IDD_TREE_SELECT), GetActiveWindow(), (DLGPROC)TreeSelectDlgProc, (LPARAM)lpParam) == IDOK;
}