コード例 #1
1
ファイル: picker.cpp プロジェクト: crazii/mameui
static LRESULT CALLBACK ListViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	struct PickerInfo *pPickerInfo;
	LRESULT rc = 0;
	BOOL bHandled = FALSE;
	WNDPROC pfnParentWndProc;
	HWND hwndHeaderCtrl  = NULL;
	HFONT hHeaderCtrlFont = NULL;

	pPickerInfo = GetPickerInfo(hWnd);
	pfnParentWndProc = pPickerInfo->pfnParentWndProc;

	switch(message)
	{
		case WM_MOUSEMOVE:
			if (MouseHasBeenMoved())
				ShowCursor(TRUE);
			break;

		case WM_ERASEBKGND:
			if (GetBackgroundBitmap())
			{
				rc = ListViewOnErase(hWnd, (HDC) wParam);
				bHandled = TRUE;
			}
			break;

		case WM_NOTIFY:
			bHandled = ListViewNotify(hWnd, (LPNMHDR) lParam);
			break;

		case WM_SETFONT:
			hwndHeaderCtrl = ListView_GetHeader(hWnd);
			if (hwndHeaderCtrl)
				hHeaderCtrlFont = GetWindowFont(hwndHeaderCtrl);
			break;

		case WM_CONTEXTMENU:
			bHandled = ListViewContextMenu(hWnd, lParam);
			break;

		case WM_DESTROY:
			// Received WM_DESTROY; time to clean up
			if (pPickerInfo->pCallbacks->pfnSetViewMode)
				pPickerInfo->pCallbacks->pfnSetViewMode(pPickerInfo->nCurrentViewID);
			Picker_Free(pPickerInfo);
			SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR) pfnParentWndProc);
			SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) NULL);
			break;
	}

	if (!bHandled)
		rc = CallParentWndProc(pfnParentWndProc, hWnd, message, wParam, lParam);

	 // If we received WM_SETFONT, reset header ctrl font back to original font
	if (hwndHeaderCtrl)
		SetWindowFont(hwndHeaderCtrl, hHeaderCtrlFont, TRUE);

	return rc;
}
コード例 #2
0
ファイル: ListView.cpp プロジェクト: nexus7ici/TSTask
int CListView::GetColumnCount() const
{
	if (m_hwnd==nullptr)
		return 0;

	return Header_GetItemCount(ListView_GetHeader(m_hwnd));
}
コード例 #3
0
/**
 *	@brief	Initialzes the object.
 *	@param[in]	hControl	handle to target control.
 */
void WinListViewAdapter::Init(HWND hControl)
{
	WinControlAdapter::Init(hControl);

	HWND hHeader = ListView_GetHeader(hControl);
	columnCount = Header_GetItemCount(hHeader);
}
コード例 #4
0
ファイル: picker.cpp プロジェクト: crazii/mameui
int Picker_GetNumColumns(HWND hWnd)
{
	int  nColumnCount = 0;
	int  i = 0;
	HWND hwndHeader;
	int  *shown;
	struct PickerInfo *pPickerInfo;

	pPickerInfo = GetPickerInfo(hWnd);

	shown = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*shown));
	if (!shown)
		return -1;

	pPickerInfo->pCallbacks->pfnGetColumnShown(shown);
	hwndHeader = ListView_GetHeader(hWnd);

	if (GetUseOldControl() || (nColumnCount = Header_GetItemCount(hwndHeader)) < 1)
	{
		nColumnCount = 0;
		for (i = 0; i < pPickerInfo->nColumnCount ; i++ )
		{
			if (shown[i])
				nColumnCount++;
		}
	}

	free(shown);
	return nColumnCount;
}
コード例 #5
0
ファイル: vlistview.cpp プロジェクト: DerellLicht/der_libs
//***********************************************************************
//  apparently this only works for ComCtl version 6.0.0.0
//  I would have to use a Manifest to specify that.
//  Linking a manifest requires adding a line to resource file:
//  CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "filename.manifest"
//***********************************************************************
// http://www.gamedev.net/topic/569020-set-list-view-header-sort-arrow-c-win32/
BOOL CVListView::SetHeaderSortImage(int  columnIndex, SHOW_ARROW showArrow) 
{  
   HDITEM  hdrItem  = { 0 };

   HWND hHeader = ListView_GetHeader(hwndVListView);
   if (hHeader) {
      hdrItem.mask = HDI_FORMAT;

      if ( Header_GetItem(hHeader, columnIndex, &hdrItem) ) {
         if (showArrow == SHOW_UP_ARROW) {
            hdrItem.fmt = (hdrItem.fmt & ~HDF_SORTDOWN) | HDF_SORTUP;
         } else 
         if (showArrow == SHOW_DOWN_ARROW) {
            hdrItem.fmt = (hdrItem.fmt & ~HDF_SORTUP) | HDF_SORTDOWN;
         } else 
         {
            hdrItem.fmt = hdrItem.fmt & ~(HDF_SORTDOWN | HDF_SORTUP);
         }

         return Header_SetItem(hHeader, columnIndex, &hdrItem);
      }
   }

   return FALSE;
};
コード例 #6
0
ファイル: mylistvw.c プロジェクト: burzumishi/arnold
void MyListView_AddItemWithIcon(HWND hListView, TCHAR *ItemText, int ColumnIndex, int RowIndex, void *pData, int iIcon)
{
	LV_ITEM	ListViewItem;
	int ColumnWidth;
	int ItemWidth;

	HWND hHeader;

	hHeader = ListView_GetHeader(hListView);

	if (ColumnIndex == (Header_GetItemCount(hHeader)-1))
	{
		RECT itemRect;
		RECT headerRect;

		// get rect of last column in header
		Header_GetItemRect(hHeader, (Header_GetItemCount(hHeader)-1), &itemRect);

		GetClientRect(hHeader,&headerRect);

		ItemWidth= headerRect.right - itemRect.left;
	}
	else
	{
		ItemWidth = ListView_GetStringWidth(hListView, ItemText) + (GetSystemMetrics(SM_CXEDGE)<<1)+(4<<1);
	}
	
	ColumnWidth = ListView_GetColumnWidth(hListView,ColumnIndex);

	ListViewItem.mask = LVIF_TEXT;
	
	if (iIcon!=-1)
	{
		ListViewItem.mask |= LVIF_IMAGE;
		ListViewItem.iImage = iIcon;
	}

	ListViewItem.iItem = RowIndex;
	ListViewItem.iSubItem = ColumnIndex;
	ListViewItem.pszText = ItemText;

	if (ColumnIndex == 0)
	{
		ListViewItem.mask |= LVIF_PARAM;
		ListViewItem.lParam = (LPARAM)pData;

		ListView_InsertItem(hListView, &ListViewItem);
	}
	else
	{
		ListView_SetItem(hListView, &ListViewItem);
	}

	if (ItemWidth>ColumnWidth)
		ListView_SetColumnWidth(hListView, ColumnIndex, ItemWidth);




}
コード例 #7
0
ファイル: WinHelper.cpp プロジェクト: Konnekt/staminalib
	int ListView_MoveItem(HWND hwnd , int pos , int newPos) {
		char buff [2000];
		int cols = Header_GetItemCount(ListView_GetHeader(hwnd));
		LVITEM lvi;
		lvi.mask = LVIF_IMAGE|LVIF_INDENT|LVIF_PARAM|LVIF_TEXT|LVIF_STATE;
		lvi.iItem = pos;
		lvi.iSubItem = 0;
		lvi.stateMask= (UINT)-1;
		lvi.pszText = buff;
		lvi.cchTextMax = 2000;
		ListView_GetItem(hwnd , &lvi);
		int check = ListView_GetCheckState(hwnd , pos);

		if (newPos>pos) newPos++; else pos++;
		lvi.iItem = newPos;
		newPos = ListView_InsertItem(hwnd , &lvi);
		ListView_SetCheckState(hwnd , newPos , check);

		lvi.mask = LVIF_TEXT;
		for (int i=1; i<cols; i++) {
			lvi.iSubItem=i;
			lvi.iItem=pos;
			ListView_GetItem(hwnd , &lvi);
			lvi.iItem=newPos;
			ListView_SetItem(hwnd , &lvi);
		}
		//    ListView_SetSelectionMark(hwnd , newPos);
		ListView_EnsureVisible(hwnd , newPos , 0);
		ListView_DeleteItem(hwnd , pos);
		return 1;
	}
コード例 #8
0
ファイル: SysLogQuery.cpp プロジェクト: wzp85/myprotect
void CSysLogQuery::SetHeaderCheckbox(void)
{
	BOOL fChecked = TRUE;
	for(int nItem = 0;nItem < ListView_GetItemCount(m_Syslog_query);nItem++)
	{
		if(!ListView_GetCheckState(m_Syslog_query,nItem))
		{
			fChecked = FALSE;
			break;
		}
	}
	
	HWND header = ListView_GetHeader(m_Syslog_query);
	HDITEM hdi = {0};
	hdi.mask = HDI_FORMAT;
	Header_GetItem(header,0,&hdi);
	if (fChecked) 
	{
		hdi.fmt |= HDF_CHECKED;
	} else 
	{
		hdi.fmt &= ~HDF_CHECKED;
	}
	Header_SetItem(header, 0, &hdi);
}
コード例 #9
0
void Explorerplusplus::OnRightClick(NMHDR *nmhdr)
{
	if(nmhdr->hwndFrom == m_hActiveListView)
	{
		POINT CursorPos;
		DWORD dwPos;

		dwPos = GetMessagePos();
		CursorPos.x = GET_X_LPARAM(dwPos);
		CursorPos.y = GET_Y_LPARAM(dwPos);

		OnListViewRClick(&CursorPos);
	}
	else if(nmhdr->hwndFrom == ListView_GetHeader(m_hActiveListView))
	{
		/* The header on the active listview was right-clicked. */
		POINT CursorPos;
		DWORD dwPos;

		dwPos = GetMessagePos();
		CursorPos.x = GET_X_LPARAM(dwPos);
		CursorPos.y = GET_Y_LPARAM(dwPos);

		OnListViewHeaderRClick(&CursorPos);
	}
	else if(nmhdr->hwndFrom == m_hMainToolbar)
	{
		OnMainToolbarRClick();
	}
}
コード例 #10
0
ファイル: cpufunc.c プロジェクト: Kobey1/dprofiler
LRESULT 
CpuFuncOnColumnClick(
	__in PDIALOG_OBJECT Object,
	__in NMLISTVIEW *lpNmlv
	)
{
	HWND hWndHeader;
	int nColumnCount;
	int i;
	HDITEM hdi;
	LISTVIEW_OBJECT *ListView;
	PCPU_FORM_CONTEXT Context;
	HWND hWndCtrl;
	HWND hWnd;

	Context = SdkGetContext(Object, CPU_FORM_CONTEXT);

	ListView = Context->ListView;

    if (ListView->SortOrder == SortOrderNone){
        return 0;
    }

	if (ListView->LastClickedColumn == lpNmlv->iSubItem) {
		ListView->SortOrder = (LIST_SORT_ORDER)!ListView->SortOrder;
    } else {
		ListView->SortOrder = SortOrderAscendent;
    }
    
	hWnd = Object->hWnd;
	hWndCtrl = GetDlgItem(hWnd, IDC_LIST_FUNCTION);
    hWndHeader = ListView_GetHeader(hWndCtrl);
    ASSERT(hWndHeader);

    nColumnCount = Header_GetItemCount(hWndHeader);
    
    for (i = 0; i < nColumnCount; i++) {
        hdi.mask = HDI_FORMAT;
        Header_GetItem(hWndHeader, i, &hdi);
        
        if (i == lpNmlv->iSubItem) {
            hdi.fmt &= ~(HDF_SORTDOWN | HDF_SORTUP);
            if (ListView->SortOrder == SortOrderAscendent){
                hdi.fmt |= HDF_SORTUP;
            } else {
                hdi.fmt |= HDF_SORTDOWN;
            }
        } else {
            hdi.fmt &= ~(HDF_SORTDOWN | HDF_SORTUP);
        } 
        
        Header_SetItem(hWndHeader, i, &hdi);
    }
    
	ListView->LastClickedColumn = lpNmlv->iSubItem;
    ListView_SortItemsEx(hWndCtrl, CpuFuncSortCallback, (LPARAM)hWnd);

    return 0L;
}
コード例 #11
0
ファイル: BugTrapUtils.cpp プロジェクト: 3rdexp/fxfile
void CListViewOrder::InitList(HWND hwndList)
{
	m_iColumnNumber = -1;
	m_bAscending = TRUE;
	_ASSERTE(g_pResManager != NULL);
	HWND hwndHeader = ListView_GetHeader(hwndList);
	Header_SetImageList(hwndHeader, g_pResManager->m_hSortArrows);
}
コード例 #12
0
void LoadColumnSizes(HWND hwndResults, const char *szProto)
{
	HDITEM hdi;
	int columnOrder[NUM_COLUMNID];
	int columnCount;
	char szSetting[32];
	int i;
	FindAddDlgData *dat;
	bool colOrdersValid;

	defaultColumnSizes[COLUMNID_PROTO] = GetSystemMetrics(SM_CXSMICON) + 4;
	dat = (FindAddDlgData*)GetWindowLongPtr(GetParent(hwndResults), GWLP_USERDATA);

	columnCount = NUM_COLUMNID;
	colOrdersValid = true;
	for (i=0; i < NUM_COLUMNID; i++)
	{
		LVCOLUMN lvc;
		if (i < columnCount)
		{
			int bNeedsFree = FALSE;
			lvc.mask = LVCF_TEXT | LVCF_WIDTH;
			if (szColumnNames[i] != NULL)
				lvc.pszText = TranslateTS(szColumnNames[i]);
			else if (i == COLUMNID_HANDLE)
			{
				if (szProto)
				{
					bNeedsFree = TRUE;
					lvc.pszText = mir_a2t((char*)CallProtoServiceInt(NULL,szProto, PS_GETCAPS, PFLAG_UNIQUEIDTEXT, 0));
				}
				else
					lvc.pszText = _T("ID");
			}
			else lvc.mask &= ~LVCF_TEXT;
			mir_snprintf(szSetting, SIZEOF(szSetting), "ColWidth%d", i);
			lvc.cx = db_get_w(NULL, "FindAdd", szSetting, defaultColumnSizes[i]);
			ListView_InsertColumn(hwndResults, i, (LPARAM)&lvc);

			if (bNeedsFree)
				mir_free(lvc.pszText);
		}
		mir_snprintf(szSetting, SIZEOF(szSetting), "ColOrder%d", i);
		columnOrder[i] = db_get_b(NULL, "FindAdd", szSetting, -1);
		if (columnOrder[i] == -1 || columnOrder[i] >= NUM_COLUMNID) colOrdersValid = false;
	}

	if (colOrdersValid)
		ListView_SetColumnOrderArray(hwndResults, columnCount, columnOrder);

	dat->iLastColumnSortIndex = db_get_b(NULL, "FindAdd", "SortColumn", COLUMNID_NICK);
	if (dat->iLastColumnSortIndex >= columnCount) dat->iLastColumnSortIndex = COLUMNID_NICK;
	dat->bSortAscending = db_get_b(NULL, "FindAdd", "SortAscending", TRUE);

	hdi.mask = HDI_FORMAT;
	hdi.fmt = HDF_LEFT | HDF_STRING | (dat->bSortAscending ? HDF_SORTDOWN : HDF_SORTUP);
	Header_SetItem(ListView_GetHeader(hwndResults), dat->iLastColumnSortIndex, &hdi);
}
コード例 #13
0
void CFileBrowserListCtrl::PreSubclassWindow() 
{
	// if we were created from a dialog resource, OnCreate never gets called
	// because creation occurred before our CWnd was attached, so we must init
	// from here instead; we identify this case by existence of header control
	if (ListView_GetHeader(m_hWnd) != NULL)	// if header control exists
		Init();	// assume OnCreate won't be called
	CListCtrl::PreSubclassWindow();
}
コード例 #14
0
ファイル: dllsDlg.cpp プロジェクト: flyfaster/toysrc
void CdllsDlg::OnBnClickedSave()
{
	TCHAR app_path_buf[PATH_LEN];
	memset(app_path_buf,0,sizeof(app_path_buf));
	GetModuleFileName(NULL, app_path_buf,sizeof(app_path_buf)/sizeof(app_path_buf[0]));
	int pathlen = _tcslen(app_path_buf);
	int i = pathlen-1;
	while(i>0)
	{
		if(app_path_buf[i]==_T('\\') )
		{
			app_path_buf[i+1] = 0;
			break;
		}
		i--;
	}

	TCHAR szFilters[] =_T("Text Files (*.txt)\0*.txt\0")
		_T("All Files (*.*)\0*.*\0");
	CFileDialog fdlg (FALSE, NULL, NULL,
		OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | 
		OFN_PATHMUSTEXIST |OFN_EXPLORER, szFilters, AfxGetMainWnd());
	//CFileDialog ofdlg(FALSE);
	fdlg.m_ofn.lpstrFilter = szFilters;
	//CFileDialog fdlg(FALSE,_T(".txt"),_T("dlllist.txt"));
	fdlg.m_ofn.lpstrInitialDir =app_path_buf;
	if(IDOK!=fdlg.DoModal())
		return;	
	std::basic_string<TCHAR> savepathname = fdlg.m_ofn.lpstrFile;
	if(1==fdlg.m_ofn.nFilterIndex && !end_with(savepathname,_T(".txt"),true) )
	{
		savepathname += _T(".txt");
	}
	std::basic_fstream<TCHAR> ofile;
	ofile.open( (LPCSTR)_bstr_t(savepathname.c_str()),std::ios_base::out|std::ios_base::trunc);
	HWND hwndListView =GetDlgItem(IDC_LVW)->m_hWnd;
	int rows = 0;
	rows = ListView_GetItemCount(hwndListView);
	int cols = 0;
	HWND headerwnd = ListView_GetHeader(hwndListView);
	cols = Header_GetItemCount(headerwnd);
	for(int i=0;i<rows;i++)
	{
		for(int j=0;j<cols;j++)
		{
			app_path_buf[0] = 0;
			ListView_GetItemText(hwndListView,i,j,app_path_buf,ARRAY_SIZE(app_path_buf));
			if(j<cols-1)
				ofile<<app_path_buf<<_T("    ");
			else
			{
				ofile<<app_path_buf<<(char)0xd<<(char)0xa;
			}
		}
	}
	ofile.close();
}
コード例 #15
0
const CHeaderCtrl* CReportCtrl::GetHeaderCtrl() const
{
	// Yes, CListCtrl already provides "GetHeaderCtrl", but not const.	
	// I desperately need a "const" version of "GetHeaderCtrl" because that's the
	// only way to make "GetColumnCount" const, which, in turn, is being called by
	// A LOT of const member functions. So if "GetHeaderCtrl" is not const, there will
	// be almost no const member function at all in this class. Terrible.
	return (const CHeaderCtrl*)(CWnd::FromHandle(ListView_GetHeader(GetSafeHwnd())));
}
コード例 #16
0
void CSearchDialog::UpdateListViewHeader()
{
	HWND hHeader = ListView_GetHeader(GetDlgItem(m_hDlg,IDC_LISTVIEW_SEARCHRESULTS));

	HDITEM hdItem;

	/* Remove the sort arrow from the column that was
	previously selected. */
	if(m_iPreviousSelectedColumn != -1)
	{
		hdItem.mask	= HDI_FORMAT;
		Header_GetItem(hHeader,m_iPreviousSelectedColumn,&hdItem);

		if(hdItem.fmt & HDF_SORTUP)
		{
			hdItem.fmt &= ~HDF_SORTUP;
		}
		else if(hdItem.fmt & HDF_SORTDOWN)
		{
			hdItem.fmt &= ~HDF_SORTDOWN;
		}

		Header_SetItem(hHeader,m_iPreviousSelectedColumn,&hdItem);
	}

	int iColumn = 0;

	for each(auto ci in m_sdps->m_Columns)
	{
		if(ci.SortMode == m_sdps->m_SortMode)
		{
			break;
		}

		iColumn++;
	}

	hdItem.mask	= HDI_FORMAT;
	Header_GetItem(hHeader,iColumn,&hdItem);

	if(m_sdps->m_bSortAscending)
	{
		hdItem.fmt |= HDF_SORTUP;
	}
	else
	{
		hdItem.fmt |= HDF_SORTDOWN;
	}

	Header_SetItem(hHeader,iColumn,&hdItem);

	m_iPreviousSelectedColumn = iColumn;
}
コード例 #17
0
//----------------------------------------------------------------------------------------------------------------------
//  INSERT IMAGE LISTS
//----------------------------------------------------------------------------------------------------------------------
void cListViewComputers :: insert_image_lists ( HWND hwnd )
{ 
	HANDLE hStateBlue = 0;
	HANDLE hStateGold = 0;
	HANDLE hStateGray = 0;

	//-----------------------------------
	// INSERT IMAGES IN ORDER
	// 0 == GRAY == NO CONNECTIONS
	// 1 == GOLD == ONE-WAY CONNECTION
	// 2 == BLUE == TWO-WAY CONNECTION
	//-----------------------------------

	HANDLE hDeskStraightGray = LoadImage ( g_hInstance, MAKEINTRESOURCE ( IDI_COMPUTER_GRAY ), 
	 	                      IMAGE_ICON, 85, 73, LR_CREATEDIBSECTION );

	HANDLE hDeskStraightGold = LoadImage ( g_hInstance, MAKEINTRESOURCE ( IDI_COMPUTER_GOLD), // returns 0 on fail
	 	                      IMAGE_ICON, 85, 73, LR_CREATEDIBSECTION | LR_LOADTRANSPARENT );

	HANDLE hDeskStraightBlue = LoadImage ( g_hInstance, MAKEINTRESOURCE ( IDI_COMPUTER_BLUE ), 
	 	                      IMAGE_ICON, 85, 73, LR_CREATEDIBSECTION );


	hStateGray = LoadImage ( g_hInstance, MAKEINTRESOURCE ( IDI_CONNECTION_STATE_GRAY ), 
	 	                      IMAGE_ICON, 16,24, LR_CREATEDIBSECTION );

	hStateGold = LoadImage ( g_hInstance, MAKEINTRESOURCE ( IDI_CONNECTION_STATE_GOLD ), 
	 	                      IMAGE_ICON, 16,24, LR_CREATEDIBSECTION );

	hStateBlue = LoadImage ( g_hInstance, MAKEINTRESOURCE ( IDI_CONNECTION_STATE_BLUE ), 
	 	                      IMAGE_ICON, 16,24, LR_CREATEDIBSECTION );

    hImageListLarge = ImageList_Create ( 85, 73, ILC_MASK | ILC_COLORDDB | ILC_COLOR32, 3, 0 );
	HRESULT iResult = ImageList_AddIcon ( hImageListLarge, (HICON)hDeskStraightGray );
	iResult = ImageList_AddIcon ( hImageListLarge, (HICON)hDeskStraightGold );
	iResult = ImageList_AddIcon ( hImageListLarge, (HICON)hDeskStraightBlue );

	hImageListState = ImageList_Create ( 16, 24, ILC_MASK | ILC_COLORDDB | ILC_COLOR32, 3, 0 );
	iResult = ImageList_AddIcon ( hImageListState, (HICON)hStateGray);
	iResult = ImageList_AddIcon ( hImageListState, (HICON)hStateGold );
	iResult = ImageList_AddIcon ( hImageListState, (HICON)hStateBlue );

	HIMAGELIST hResult = ListView_SetImageList ( hwnd, hImageListLarge, LVSIL_NORMAL ); 
	ListView_SetExtendedListViewStyle ( hwnd, LVS_EX_BORDERSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP );
	hResult = ListView_SetImageList ( hwnd, hImageListState, LVSIL_STATE );
	HWND hHeader = ListView_GetHeader ( hwnd );
	RECT rect;
	GetWindowRect ( hHeader, & rect );
	MoveWindow ( hHeader, rect.left, rect.top, 200, 100, TRUE );
	ShowWindow ( hHeader, SW_NORMAL );
}
コード例 #18
0
ファイル: gui.cpp プロジェクト: KGE-INC/modplus
void VDUIRestoreListViewColumnsW32(HWND hwnd, const char *name) {
	HWND hwndHeader = ListView_GetHeader(hwnd);
	int count = Header_GetItemCount(hwndHeader);

	VDRegistryAppKey key("Window Placement");
	if ((size_t)key.getBinaryLength(name) != sizeof(float) * count)
		return;

	vdfastvector<float> widths(count);
	if (!key.getBinary(name, (char *)widths.data(), sizeof(float) * count))
		return;

	VDUISetListViewColumnsW32(hwnd, widths.data(), count);
}
コード例 #19
0
ファイル: SysLogQuery.cpp プロジェクト: wzp85/myprotect
// CSysLogQuery 消息处理程序
BOOL CSysLogQuery::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// TODO:  在此添加额外的初始
	CRect rect;
	m_Syslog_query.GetClientRect(&rect);
	m_Syslog_query.SetExtendedStyle(m_Syslog_query.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES );

	
	CImageList img_list;
	img_list.Create(1,25,ILC_COLORDDB | ILC_MASK,0,0); 
	m_Syslog_query.SetImageList(&img_list,LVSIL_SMALL); 

	m_Syslog_query.InsertColumn(0,NULL,LVCFMT_CENTER,40);        //添加列标题
    m_Syslog_query.InsertColumn(1, _T("操作时间"), LVCFMT_CENTER,(rect.Width()-40)/3-90, 1);   
    m_Syslog_query.InsertColumn(2, _T("主机名"), LVCFMT_CENTER, (rect.Width()-40)/3-100, 2);   
    m_Syslog_query.InsertColumn(3, _T("消息内容"), LVCFMT_CENTER, (rect.Width()-40)/3+180, 3); 
	//m_Syslog_query.InsertColumn(4, _T("消息内容"), LVCFMT_CENTER, (rect.Width()-40)/4+150, 4); 



	HWND header = ListView_GetHeader(m_Syslog_query);
	DWORD dwHeaderStyle = ::GetWindowLong(header, GWL_STYLE);
	dwHeaderStyle |= HDS_CHECKBOXES;
	::SetWindowLong(header, GWL_STYLE, dwHeaderStyle);

	// Store the ID of the header control so we can handle its notification by ID
	int m_HeaderId = ::GetDlgCtrlID(header);

	// Now, we can update the format for the first header item,
	// which corresponds to the first column
	HDITEM hdi = { 0 };
	hdi.mask = HDI_FORMAT;
	Header_GetItem(header, 0, &hdi);
	hdi.fmt |= HDF_CHECKBOX | HDF_FIXEDWIDTH;
	Header_SetItem(header, 0, &hdi);
	
	isCheckbox_log = FALSE;
	memset(check_log,0,256);
	i_checked_log = 0;
	
	page = 1;
	current_page = 0;


	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}
コード例 #20
0
ファイル: MainWindow.cpp プロジェクト: Luminoth/ttable
/// Deletes the list view columns
void MainWindow::delete_columns()
{
    ListView_DeleteAllItems(m_hWndTable);

    // column 0 can't be deleted, so we gotta fake around it
    const int count = Header_GetItemCount(ListView_GetHeader(m_hWndTable));

    LVCOLUMN lvc;
    lvc.mask = LVCF_WIDTH;
    lvc.cx = 0;
    ListView_InsertColumn(m_hWndTable, 0, &lvc);

    for(int i=0; i<count; ++i)
        ListView_DeleteColumn(m_hWndTable, 1);
}
コード例 #21
0
// Set the sort icons on the column header
// Sort order can be defined by: 0 (neither), 1 (ascending), 2 (descending)
void CSIPropertyPage::SetSortIcon(HWND listView, int col, int sortOrder)
{
	int numColumns = 0;
	int curCol = 0;
	wchar_t headerText[MAX_BUFFER_LENGTH];
	HWND headerRef;
	HDITEM itemHdr;

	// Retrieve reference to header control
	headerRef = ListView_GetHeader(listView);

	// Retrieve number of list view columns
	numColumns = Header_GetItemCount(headerRef);

	for (curCol = 0; curCol<numColumns; curCol++)
	{
		itemHdr.mask = HDI_FORMAT | HDI_TEXT;
		itemHdr.pszText = headerText;
		itemHdr.cchTextMax = MAX_BUFFER_LENGTH - 1;

		// Get the column
		SendMessage(headerRef, HDM_GETITEM, curCol, (LPARAM)&itemHdr);

		// Check the sort order and set the sort icon
		if ((sortOrder != 0) && (curCol == col))
		{
			switch (sortOrder)
			{
			case 1:
				itemHdr.fmt &= !HDF_SORTUP;
				itemHdr.fmt |= HDF_SORTDOWN;
				break;
			case 2:
				itemHdr.fmt &= !HDF_SORTDOWN;
				itemHdr.fmt |= HDF_SORTUP;
				break;
			}
		}
		else
		{
			itemHdr.fmt &= !HDF_SORTUP & !HDF_SORTDOWN;
		}
		itemHdr.fmt |= HDF_STRING;
		itemHdr.mask = HDI_FORMAT | HDI_TEXT;

		SendMessage(headerRef, HDM_SETITEM, curCol, (LPARAM)&itemHdr);
	}
}
コード例 #22
0
ファイル: picker.cpp プロジェクト: crazii/mameui
static BOOL ListViewContextMenu(HWND hwndPicker, LPARAM lParam)
{
	struct PickerInfo *pPickerInfo;
	POINT pt, headerPt;
	int i = 0, nViewID = 0, nColumn = -1;
	HWND hwndHeader;
	RECT rcCol;

	pPickerInfo = GetPickerInfo(hwndPicker);

	// Extract the point out of the lparam
	pt.x = GET_X_LPARAM(lParam);
	pt.y = GET_Y_LPARAM(lParam);
	if (pt.x < 0 && pt.y < 0)
		GetCursorPos(&pt);

	// Figure out which header column was clicked, if at all
	nViewID = Picker_GetViewID(hwndPicker);
	if ((nViewID == VIEW_REPORT) || (nViewID == VIEW_GROUPED))
	{
		hwndHeader = ListView_GetHeader(hwndPicker);
		headerPt = pt;
		ScreenToClient(hwndHeader, &headerPt);

		for (i = 0; Header_GetItemRect(hwndHeader, i, &rcCol); i++)
		{
			if (PtInRect(&rcCol, headerPt))
			{
				nColumn = i;
				break;
			}
		}
	}

	if (nColumn >= 0)
	{
		// A column header was clicked
		if (pPickerInfo->pCallbacks->pfnOnHeaderContextMenu)
			pPickerInfo->pCallbacks->pfnOnHeaderContextMenu(pt, nColumn);
	}
	else
	{
		// The body was clicked
		if (pPickerInfo->pCallbacks->pfnOnBodyContextMenu)
			pPickerInfo->pCallbacks->pfnOnBodyContextMenu(pt);
	}
	return TRUE;
}
コード例 #23
0
ファイル: favorites.cpp プロジェクト: carstene1ns/fbagx
// Set the UP / DOWN arrow image when a column header is clicked in the Favorite Games List
void ListView_SetHeaderSortImage(HWND hLView, int nColIndex, bool bListViewAscending)
{
    HWND hListViewHeader			= ListView_GetHeader(hLView);
    BOOL isCommonControlVersion6	= IsCommCtrlVersion6();    
    int nColCount					= Header_GetItemCount(hListViewHeader);

    for (int nIndex = 0; nIndex < nColCount; nIndex++)
    {
        HDITEM hi;
        
        // I only need to retrieve the format if i'm on windows xp. If not, then i need to retrieve the bitmap also.
        hi.mask = HDI_FORMAT | (isCommonControlVersion6 ? 0 : HDI_BITMAP);
        
        Header_GetItem(hListViewHeader, nIndex, &hi);
        
        // Set sort image to this column
        if(nIndex == nColIndex)
        {
            // Windows xp has a easier way to show the sort order in the header: i just have to set a flag and windows will do the drawing. No windows xp, no easy way.
            if (isCommonControlVersion6) {
                hi.fmt &= ~(HDF_SORTDOWN|HDF_SORTUP);
                hi.fmt |= bListViewAscending ? HDF_SORTUP : HDF_SORTDOWN;
            } else {
                UINT bitmapID = bListViewAscending ? IDB_UPARROW : IDB_DOWNARROW;
                
				// If there's a bitmap, let's delete it.
                if (hi.hbm) DeleteObject(hi.hbm);

                hi.fmt |= HDF_BITMAP|HDF_BITMAP_ON_RIGHT;
                hi.hbm = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(bitmapID), IMAGE_BITMAP, 0,0, LR_LOADMAP3DCOLORS);
            }
        } else {
			// Remove sort image (if exists) from other columns.
			if (isCommonControlVersion6) {
                hi.fmt &= ~(HDF_SORTDOWN|HDF_SORTUP);
			} else {
				// If there's a bitmap, let's delete it.
                if (hi.hbm) DeleteObject(hi.hbm);
                
                // Remove flags that tell windows to look for a bitmap.
                hi.mask &= ~HDI_BITMAP;
                hi.fmt &= ~(HDF_BITMAP|HDF_BITMAP_ON_RIGHT);
            }
        }        
        Header_SetItem(hListViewHeader, nIndex, &hi);
    }
}
コード例 #24
0
void CManageBookmarksDialog::OnRClick(NMHDR *pnmhdr)
{
	HWND hListView = GetDlgItem(m_hDlg,IDC_MANAGEBOOKMARKS_LISTVIEW);
	HWND hTreeView = GetDlgItem(m_hDlg,IDC_MANAGEBOOKMARKS_TREEVIEW);

	if(pnmhdr->hwndFrom == hListView)
	{
		OnListViewRClick();
	}
	else if(pnmhdr->hwndFrom == ListView_GetHeader(hListView))
	{
		OnListViewHeaderRClick();
	}
	else if(pnmhdr->hwndFrom == hTreeView)
	{

	}
}
コード例 #25
0
ファイル: MainWindow.cpp プロジェクト: Luminoth/ttable
void MainWindow::OnSize(UINT state, int cx, int cy)
{
    HWND hWndControl = GetDlgItem(handle(), IDC_VARIABLES_STATIC);
    ::MoveWindow(hWndControl, 10, 10, 96, 20, TRUE);

    ::MoveWindow(m_hWndVariables, 10, 30, 96, 20, TRUE);

    hWndControl = GetDlgItem(handle(), IDC_MODE_STATIC);
    ::MoveWindow(hWndControl, 10, 55, 96, 20, TRUE);

    ::MoveWindow(m_hWndFunction, 10, 75, 96, 20, TRUE);
    ::MoveWindow(m_hWndMinterms, 10, 75, 96, 20, TRUE);
    ::MoveWindow(m_hWndMaxterms, 10, 75, 96, 20, TRUE);

    ::MoveWindow(m_hWndGenerate, 10, 105, 64, 32, TRUE);

    ::MoveWindow(m_hWndTable, 128, 10, cx - 128 - 10, cy - 10 - 10, TRUE);
    ListView_SetColumnWidth(m_hWndTable, Header_GetItemCount(ListView_GetHeader(m_hWndTable)) - 1, LVSCW_AUTOSIZE_USEHEADER);
}
コード例 #26
0
ファイル: vlistview.cpp プロジェクト: DerellLicht/der_libs
//*****************************************************************************
void CVListView::set_header_text(uint idx, char *msg)
{
   HWND hwndHeader = ListView_GetHeader(hwndVListView);
   if (hwndHeader) {
      HDITEM item;
      item.mask = HDI_TEXT ;
#ifdef UNICODE            
      item.pszText = ascii2unicode(msg) ;
      item.cchTextMax = _tcslen(item.pszText) ;
#else
      item.pszText = msg ;
      item.cchTextMax = strlen(msg) ;
#endif
      item.fmt = HDF_STRING | HDF_CENTER ;
      Header_SetItem(hwndHeader, idx, &item);  //lint !e522
   } else { //lint !e550  Symbol 'item' (line 753) not accessed
      syslog("ListView_GetHeader: %s\n", get_system_message()) ;
   }
}
コード例 #27
0
ファイル: BugTrapUtils.cpp プロジェクト: 3rdexp/fxfile
/**
 * @param hwndList - list view control.
 * @param iImage - image index.
 */
void CListViewOrder::SetSortImage(HWND hwndList, int iImage)
{
	_ASSERTE(m_iColumnNumber >= 0);
	HWND hwndHeader = ListView_GetHeader(hwndList);
	HDITEM hdi;
	ZeroMemory(&hdi, sizeof(hdi));
	if (iImage >= 0)
	{
		hdi.mask = HDI_FORMAT | HDI_IMAGE;
		hdi.iImage = iImage;
		hdi.fmt = HDF_LEFT | HDF_STRING | HDF_IMAGE;
	}
	else
	{
		hdi.mask = HDI_FORMAT;
		hdi.fmt = HDF_LEFT | HDF_STRING;
	}
	Header_SetItem(hwndHeader, m_iColumnNumber, &hdi);
}
コード例 #28
0
ファイル: listview.c プロジェクト: GYGit/reactos
BOOL
ListView_SortEx(HWND hListView,
                int iSortingColumn,
                int iSortedColumn)
{
    HWND hHeader;
    HDITEM hColumn;
    BOOL bSortAsc;
    Sort sort;

    if ((GetWindowLongPtr(hListView, GWL_STYLE) & ~LVS_NOSORTHEADER) == 0)
        return TRUE;

    hHeader = ListView_GetHeader(hListView);
    SecureZeroMemory(&hColumn, sizeof(hColumn));

    if ( (iSortedColumn != -1) && (iSortedColumn != iSortingColumn) )
    {
        hColumn.mask = HDI_FORMAT | HDI_LPARAM;
        Header_GetItem(hHeader, iSortedColumn, &hColumn);
        hColumn.fmt &= ~HDF_SORTUP & ~HDF_SORTDOWN;
        hColumn.lParam = 0; // 0: deactivated, 1: false, 2: true.
        Header_SetItem(hHeader, iSortedColumn, &hColumn);
    }

    hColumn.mask = HDI_FORMAT | HDI_LPARAM;
    Header_GetItem(hHeader, iSortingColumn, &hColumn);

    bSortAsc = !(hColumn.lParam == 2); // 0: deactivated, 1: false, 2: true.

    hColumn.fmt &= (bSortAsc ? ~HDF_SORTDOWN : ~HDF_SORTUP );
    hColumn.fmt |= (bSortAsc ?  HDF_SORTUP   : HDF_SORTDOWN);
    hColumn.lParam = (LPARAM)(bSortAsc ? 2 : 1);
    Header_SetItem(hHeader, iSortingColumn, &hColumn);

    /* Sort the list */
    sort.bSortAsc = bSortAsc;
    sort.hList    = hListView;
    sort.nClickedColumn = iSortingColumn;
    return ListView_SortItemsEx(hListView, SortListView, (LPARAM)&sort);
}
コード例 #29
0
ファイル: picker.cpp プロジェクト: crazii/mameui
// put the arrow on the new sort column
static void Picker_ResetHeaderSortIcon(HWND hwndPicker)
{
	struct PickerInfo *pPickerInfo;
	HWND hwndHeader;
	HD_ITEM hdi;
	int i = 0, nViewColumn = 0;
	BOOL res = 0;

	pPickerInfo = GetPickerInfo(hwndPicker);

	hwndHeader = ListView_GetHeader(hwndPicker);

	// take arrow off non-current columns
	hdi.mask = HDI_FORMAT;
	hdi.fmt = HDF_STRING;
	for (i = 0; i < pPickerInfo->nColumnCount; i++)
	{
		if (i != pPickerInfo->pCallbacks->pfnGetSortColumn())
			res = Header_SetItem(hwndHeader, Picker_GetViewColumnFromRealColumn(hwndPicker, i), &hdi);
	}

	if (GetUseXPControl())
	{
		// use built in sort arrows
		hdi.mask = HDI_FORMAT;
		hdi.fmt = HDF_STRING | (pPickerInfo->pCallbacks->pfnGetSortReverse() ? HDF_SORTDOWN : HDF_SORTUP);
	}
	else
	{
		// put our arrow icon next to the text
		hdi.mask = HDI_FORMAT | HDI_IMAGE;
		hdi.fmt = HDF_STRING | HDF_IMAGE | HDF_BITMAP_ON_RIGHT;
		hdi.iImage = pPickerInfo->pCallbacks->pfnGetSortReverse() ? 1 : 0;
	}

	nViewColumn = Picker_GetViewColumnFromRealColumn(hwndPicker, pPickerInfo->pCallbacks->pfnGetSortColumn());
	res = Header_SetItem(hwndHeader, nViewColumn, &hdi);
	res++;
}
コード例 #30
0
ファイル: gui.cpp プロジェクト: KGE-INC/modplus
void VDUISaveListViewColumnsW32(HWND hwnd, const char *name) {
	HWND hwndHeader = ListView_GetHeader(hwnd);
	int count = Header_GetItemCount(hwndHeader);

	vdfastvector<float> widths(count);
	int sum = 0;
	for(int i=0; i<count; ++i) {
		int w = ListView_GetColumnWidth(hwnd, i);
		widths[i] = (float)w;
		sum += w;
	}

	if (sum > 0) {
		float invsum = 1.0f / sum;

		for(int i=0; i<count; ++i)
			widths[i] *= invsum;

		VDRegistryAppKey key("Window Placement");
		key.setBinary(name, (const char *)widths.data(), count*sizeof(float));
	}
}