A. php源码,phplist的安装方法,我下了源码包,不知道怎么用!
程序目录都会附带readme,它会教你怎么安装.
B. 怎样给VC中的List控件添加ToolTip
VC6的List控件默认是不能为subitem提供tooltip的,只有通过重写CListCtrl类来实现。在网上找了一个写好的CToolTipListCtrl类可以显示该功能,只需调用即可。具体步骤如下:
1.将ToolTipListCtrl.h和ToolTipListCtrl.cpp加入工程。
2.为List控件添加相应的变量CListCtrl m_lstObject。
3.用CToolTipListCtrl替换上面的CListCtrl,当然还要加入相应的头文件“#include "ToolTipListCtrl.h"”。
4.设置列表的扩展样式,使之包含LVS_EX_INFOTIP样式。
m_lstObject.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_INFOTIP);
5.步骤4也可以改为
m_lstObject.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_lstObject.EnableToolTips(TRUE);
6.编译运行程序。效果见下图:
是不是很简单呢,你也赶快试试吧。
下面是ToolTipListCtrl.h和ToolTipListCtrl.cpp源码:
#if !defined(AFX_TOOLTIPLISTCTRL_H__EA17BA6D_ADD2_49E3_AB67_45B65316D19F__INCLUDED_)
#define AFX_TOOLTIPLISTCTRL_H__EA17BA6D_ADD2_49E3_AB67_45B65316D19F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ToolTipListCtrl.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CToolTipListCtrl window
#include <afxtempl.h>
/////////////////////////////////////////////////////////////////////////////
// CToolTipListCtrl, v.1.0
//
// A CListCtrl derived class that
// can display per SubItem tooltips by itself
//
// Author: Jo铏 Filipe de Castro Ferreira ([email protected])
// Based on Nate Maynard's ([email protected]) CToolTipTreeCtrl
//
// Last Modified: 7/11/2001
//
// License: Quoting Nate Maynard,
// "use it however you want. If it helps you out, drop me a line and let me know. :-)"
//
// Disclaimer: This code comes with no warranty of any kind whatsoever. Use at your own risk.
//
/////////////////////////////////////////////////////////////////////////////
//The initial state of m_wHitMask
#define INITIAL_HITMASK LVHT_ONITEMLABEL
class CToolTipListCtrl : public CListCtrl
{
// Construction
public:
CToolTipListCtrl();
// Attributes
public:
protected:
// Map's SubItems to related tooltip text
CMapStringToString m_ToolTipMap;
// A bit mask of LVHT_* flags the control will show tooltips for
WORD m_wHitMask;
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CToolTipListCtrl)
//}}AFX_VIRTUAL
// Implementation
public:
//** CWnd Overrides **
//Provide our own logic for HitTests, specifically, make ToolHitTests respond per SubItem
virtual int OnToolHitTest(CPoint point, TOOLINFO * pTI) const;
//** CTreeCtrl Overrides **
//Overriding the Delete functions makes sure m_ToolTipMap doesn't have excess mappings
virtual BOOL DeleteAllItems( );
virtual BOOL DeleteItem( int nItem );
virtual BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText );
//** Additional Functions **
//Set the TVHT_* flags that will trigger the display of a tooltip
WORD SetToolTipHitMask(WORD wHitMask);
//Clear all tooltips
virtual void DeleteAllToolTips();
//Set the tooltip text for a specific SubItem
virtual BOOL SetItemToolTipText( int nItem, int nSubItem, LPCTSTR lpszToolTipText );
//Retrieves the tooltip text for a specific SubItem
virtual CString GetItemToolTipText( int nItem, int nSubItem );
virtual ~CToolTipListCtrl();
// Generated message map functions
protected:
//{{AFX_MSG(CToolTipListCtrl)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
//Respondes to the TTN_NEEDTEXT* messages, provides the text of a tooltip
virtual afx_msg BOOL OnToolTipText( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TOOLTIPLISTCTRL_H__EA17BA6D_ADD2_49E3_AB67_45B65316D19F__INCLUDED_)
// ToolTipListCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "ToolTipListCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CToolTipListCtrl
CToolTipListCtrl::CToolTipListCtrl()
{
m_wHitMask = INITIAL_HITMASK;
}
CToolTipListCtrl::~CToolTipListCtrl()
{
// Cleanup when destroyed
DeleteAllToolTips();
}
BEGIN_MESSAGE_MAP(CToolTipListCtrl, CListCtrl)
//{{AFX_MSG_MAP(CToolTipListCtrl)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
//Trap all TTN_NEEDTEXT* Messages
//TTN_NEEDTEXT* messages are sent when a ToolTipCtrl wants a control
//to provide it with text to display as the tooltip.
//Specifically, when the TOOLINFO structure passed back to the ToolTipCtrl
//after ::OnToolHitTest has it's lpszText memeber set to LPSTR_TEXTCALLBACK.
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CToolTipListCtrl message handlers
int CToolTipListCtrl::OnToolHitTest(CPoint point, TOOLINFO * pTI) const
{
// See if the point falls onto a list item
//UINT nFlags = 0;
LVHITTESTINFO lvhitTestInfo;
lvhitTestInfo.pt = point;
int nItem = ListView_SubItemHitTest(
this->m_hWnd,
&lvhitTestInfo);
int nSubItem = lvhitTestInfo.iSubItem;
UINT nFlags = lvhitTestInfo.flags;
// nFlags is 0 if the SubItemHitTest fails
// Therefore, 0 & <anything> will equal false
if (nFlags & m_wHitMask)
{
// If it did fall on a list item,
// and it was also hit one of the
// item specific sub-areas we wish to show tool tips for
// Get the client area occupied by this control
RECT rcClient;
GetClientRect( &rcClient );
// Fill in the TOOLINFO structure
pTI->hwnd = m_hWnd;
pTI->uId = (UINT) (nItem * 100 + nSubItem);
pTI->lpszText = LPSTR_TEXTCALLBACK;
pTI->rect = rcClient;
return pTI->uId; // By returning a unique value per listItem,
// we ensure that when the mouse moves over another list item,
// the tooltip will change
}
else
{
// Otherwise, we aren't interested, so let the message propagate
return -1;
}
}
BOOL CToolTipListCtrl::OnToolTipText( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
{
// Handle both ANSI and UNICODE versions of the message
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
// Ignore messages from the built in tooltip, we are processing them internally
if( (pNMHDR->idFrom == (UINT)m_hWnd) &&
( ((pNMHDR->code == TTN_NEEDTEXTA) && (pTTTA->uFlags & TTF_IDISHWND)) ||
((pNMHDR->code == TTN_NEEDTEXTW) && (pTTTW->uFlags & TTF_IDISHWND)) ) )
{
return FALSE;
}
*pResult = 0;
CString strTipText;
// Get the mouse position
const MSG* pMessage;
pMessage = GetCurrentMessage();
ASSERT ( pMessage );
CPoint pt;
pt = pMessage->pt; // Get the point from the message
ScreenToClient( &pt ); // Convert the point's coords to be relative to this control
// See if the point falls onto a list item
LVHITTESTINFO lvhitTestInfo;
lvhitTestInfo.pt = pt;
int nItem = SubItemHitTest(&lvhitTestInfo);
int nSubItem = lvhitTestInfo.iSubItem;
UINT nFlags = lvhitTestInfo.flags;
// nFlags is 0 if the SubItemHitTest fails
// Therefore, 0 & <anything> will equal false
if( nFlags & m_wHitMask )
{
// If it did fall on a list item,
// and it was also hit one of the
// item specific sub-areas we wish to show tool tips for
// Lookup the list item's text in the ToolTip Map
CString strKey;
strKey.Format(_T("%d"), nItem * 100 + nSubItem);
if( m_ToolTipMap.Lookup(strKey, strTipText ) )
{
// If there was a CString associated with the list item,
// it's text (up to 80 characters worth, limitation of the TOOLTIPTEXT structure)
// into the TOOLTIPTEXT structure's szText member
// Deal with UNICODE
#ifndef _UNICODE
if (pNMHDR->code == TTN_NEEDTEXTA)
lstrcpyn(pTTTA->szText, strTipText, 80);
else
_mbstowcsz(pTTTW->szText, strTipText, 80);
#else
if (pNMHDR->code == TTN_NEEDTEXTA)
_wcstombsz(pTTTA->szText, strTipText, 80);
else
lstrcpyn(pTTTW->szText, strTipText, 80);
#endif
}
}
return FALSE; // We didn't handle the message,
// let the framework continue propagating the message
}
// Sets the tooltip text for a specific item
BOOL CToolTipListCtrl::SetItemToolTipText( int nItem, int nSubItem, LPCTSTR lpszToolTipText )
{
CString strKey;
strKey.Format(_T("%d"), nItem * 100 + nSubItem);
m_ToolTipMap.SetAt( strKey, lpszToolTipText );
return TRUE;
}
// Retrieve the tooltip text for a specific list item
CString CToolTipListCtrl::GetItemToolTipText( int nItem, int nSubItem )
{
CString itemToolTipText;
CString strKey;
strKey.Format(_T("%d"), nItem * 100 + nSubItem);
if( !m_ToolTipMap.Lookup( strKey, itemToolTipText ) )
{
itemToolTipText = "";
}
return itemToolTipText;
}
WORD CToolTipListCtrl::SetToolTipHitMask( WORD wHitMask )
{
WORD oldHitMask = m_wHitMask;
m_wHitMask = wHitMask;
return oldHitMask;
}
void CToolTipListCtrl::DeleteAllToolTips()
{
m_ToolTipMap.RemoveAll();
}
BOOL CToolTipListCtrl::DeleteAllItems( )
{
// Call the base class method
BOOL retVal = CListCtrl::DeleteAllItems();
if( retVal )
{
// If it succeeded, remove all tooltips
DeleteAllToolTips();
}
return retVal;
}
BOOL CToolTipListCtrl::DeleteItem( int nItem )
{
// Call the base class method
BOOL retVal = CListCtrl::DeleteItem( nItem );
if( retVal )
{
C. java 后台处理 list 为树HTML源码
构造treelist的过程可以使用递归查询获取,表结构如下
create table TB_TREE
(
id NUMBER not null,
name VARCHAR2(50),
parentId NUMBER //父节点
)
Postgre Sql:
select 语句如下,oracle可以用 start with connect by prior实现类似功能
WITH RECURSIVE r AS (
SELECT
D. java里面的list是干什么的,具体它是接口如何使用
list就是一个可以任意改变长度的数字
list本身只能作为ArrayList和LinkedList的父类引用使用
List l=new ArrayList();
这样用
E. 请问ListFilter类里的accept方法怎样才能实现
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return (String[])(v.toArray(new String[v.size()]));
}
看了list方法的源码就明白了吧,accept方法就是提供一个过滤规则,将无参list()返回的列表信息以此规则进行过滤,accept的两个参数都是为了定位待检测的项目,然后通过方法体中的过滤规则返回一个是否排除此项目的boolean值。
F. 大神们,初始化顺序表InitList(L)的源码怎么写
/*int InitList(SqList *L)//初始化顺序表
{/*L为指向顺序表的指针*/
/*L->length = 0;
return 1;//可能出现异常
}*/
G. 谁有站内搜索的源码,或者是教程。
67194五端源码及教程网络网盘免费资源在线学习
链接: https://pan..com/s/1tahpynYwQ47bqD2mXnj37g
67194五端源码及教程 官方相关广告图片 安装程序及数据库(无数据版) 火鸟门户小程序源码_20190415.zip
火鸟门户小程序上架流程.doc
火鸟门户系统 更换域名教程.mp4 后台账号密码.txt
安卓APP源码2019-4-18.7z PC端登录、支付、邮箱、短信教程配置教程.docx
IOSAPP源码2019-4-18.7z CentOS 7.4 64位 配置宝塔环境,部署火鸟门户带演示数据.mp4 APP配置教程.doc
安装说明.txt hnup_rucheng_pro_20190629_100403.sql.gz 0190629_144441.zip
H. c++ lIst的对象如何保存在文件中
这个问题得研究一下list的源码,
list本身和list的节点是不同的结构,首先看list的节点结构:
template<class
T>
struct
__list_node{
typedef
void*
void_pointer;
void_pointer
prev;
void_pointer
next;
T
data
}
从这里可以看出,list中用于存储不同类型的值,如int
或者
float
会影响list的节点的大小。
而list本身的结构如下:
template<class
T>
class
list{
protected:
typedef
__list
node<T>
list_node;
public:
typdefef
__list
node*
link_type;
protected:
link_type
node;//只要一个指针,便可表示整个list
...
}
从这里可以看出,
list中仅仅是保存了一个指向其节点的指针,
所以当对list使用sizeof的时候,
只会计算这个指针的占用的空间大小,
和整个list所指向的链表有多少个节点无关。
也就是说sizeof(list<double>)始终都是同一个值。
如果想知道list中存放了多少个值,可以调用list.size();
至于把list中的内容写到文件上,可以循环的读取list中的内容,然后再写至相应的文件
下面是我写的一段代码(VS2005编译器),楼主可以参考一下:
#include<iostream>
#include<fstream>
#include<iostream>
#include<list>
using
namespace
std;
int
main()
{
fstream
file("test.txt",fstream::out);
list<int>
int_list;
cout<<sizeof(int_list)<<endl;//cout<<24
cout<<int_list.size()<<endl;//cout<<0
for(int
i=0;i<100;i++)
int_list.push_back(i);
cout<<sizeof(int_list)<<endl;//cout<<24
cout<<int_list.size()<<endl;//cout<<100
for(list<int>::const_iterator
it=int_list.begin();it!=int_list.end();it++)
file<<*it<<endl;//cin
to
file
file.clear();
file.close();
}
I. C++ list中存储不同的类,求源码,初学者,要能编译通过的,
懒得写。。。
做个共有基类,比如:
class object
{
// 能提为共有的就提炼出来
};
使用基类保存就好了,反正子类型基类转化,直接转化就好了;
list<object*> test_list;
使用的话,只要你知道第几个具体是什么类,你转换回来就好了。
Student* student = dynamatic_cast<Student*>(test_list_iterator);
Teacher* teacher = dynamatic_cast<Teacher*>(test_list_iterator);