Red de conocimiento informático - Problemas con los teléfonos móviles - Árbol VC++, evento de nodo de clic

Árbol VC++, evento de nodo de clic

Muy simple:

Paso 1: asociar una variable CTreeCtrl (como m_Mess en el código) al control de árbol en el asistente.

Paso 2: agregar NM_Click al control de árbol en el Mensaje del asistente (es decir, mensaje de clic del mouse, asumiendo que el nombre de la función es OnClickTree)

Paso 3: agregue datos en el código (principalmente en la función que inicializa los datos de control del árbol, como OnInitDialog (en el código) )

Paso 4: Asociar una variable CTreeCtrl para el control del árbol en el asistente (como m_Mess en el código. Agregar datos en el código (principalmente en la función que inicializa los datos del control del árbol, como). en el código de la función OnInitDialog())

HTREEITEM hRoot = m_ctrlTree.InsertItem("Beijing");

m_ctrlTree.SetItemData(hRoot, 1);

HTREEITEM hChild = m_ctrlTree.InsertItem("Chaoyang District", hRoot);

m_ctrlTree.SetItemData(hChild, 3);

Nota: utilicé la función SetItemData anterior, principalmente para Diferentes los nodos agregan diferentes etiquetas

Esto se puede ver en la función de mensaje de clic a continuación

Paso 4: agregue el código de respuesta del mensaje de clic del mouse en la función OnClickTree

CPoint pt = GetCurrentMessage()->pt; //Obtiene el punto de coordenadas del mensaje de clic actual del mouse

m_ctrlTree.ScreenToClient(& pt); control

UINT uFlags = 0;

HTREEITEM hItem = m_ctrlTree.HitTest(pt, &. uFlags);//luego haz la prueba de clic

if ( (hItem != NULL) & & (TVHT_ONITEM & uFlags))//Si el clic está por encima de la posición del nodo

{

m_ctrlTree.SelectItem(hItem );

//Obtenga los datos que configuramos al principio, observe que aquí es donde comencé a configurar datos diferentes para cada nodo. Por supuesto, si tiene menos nodos de datos, también puede obtener el texto del nodo. , como "Distrito Haidian" establecido anteriormente, y luego compare las cadenas para determinar en qué nodo se hizo clic

int nDat = m_ctrlTree.

GetItemData(hItem);

// Luego, dependiendo del nodo, puedes completar diferentes operaciones

switch (nDat)

{

caso 1:

AfxMessageBox("Beijing");

descanso;

caso 2:

AfxMessageBox( "Beijing- >Distrito de Chaoyang" );

pausa;

caso 3:

AfxMessageBox("Beijing->Distrito de Haidian");

romper;

predeterminado:

AfxMessageBox("ERROR");

}<

}

/ /Si todavía no puedo entender cuál es tu problema, me quedo sin palabras. Por favor, dame un me gusta, jefe, jajajajajajaja

.