导航:首页 > 源码编译 > list源码教程

list源码教程

发布时间:2022-09-06 05:43:58

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

提取码: q932

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);

阅读全文

与list源码教程相关的资料

热点内容
卡尔曼滤波算法书籍 浏览:769
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:844
安卓怎么下载60秒生存 浏览:803
外向式文件夹 浏览:240
dospdf 浏览:431
怎么修改腾讯云服务器ip 浏览:392
pdftoeps 浏览:496
为什么鸿蒙那么像安卓 浏览:736
安卓手机怎么拍自媒体视频 浏览:186
单片机各个中断的初始化 浏览:724
python怎么集合元素 浏览:481
python逐条解读 浏览:833
基于单片机的湿度控制 浏览:499
ios如何使用安卓的帐号 浏览:883
程序员公园采访 浏览:812
程序员实战教程要多长时间 浏览:979
企业数据加密技巧 浏览:135
租云服务器开发 浏览:814
程序员告白妈妈不同意 浏览:337
攻城掠地怎么查看服务器 浏览:601