Código fuente del asistente Vc
Paso uno: asocia tu control de árbol con una variable de CTreeCtrl en el asistente (al igual que m_Mess en tu código).
Paso 2: Agregue el mensaje NM_Click del control de árbol en el asistente (es decir, el mensaje de clic del mouse, la función que se asume a continuación se llama OnClickTree).
Paso 3: Añade tus datos al código (principalmente en la función que inicializa los datos de control del árbol, como OnInitDialog() en tu código).
Htree elemento hroot = m_ctrl árbol. insertitem("Pekín");
m_ctrlTree. SetItemData(hRoot, 1);
Htree elemento hchild = m_ctrl árbol. insertitem("Distrito de Chaoyang", hRoot);
m_ctrlTree. SetItemData(hChild, 2);
HChild = m_ctrlTree. InsertItem("Distrito Haidian", hRoot);
m_ctrlTree. SetItemData(hChild, 3);
Nota: utilicé la función SetItemData anterior, principalmente para agregar diferentes etiquetas a diferentes nodos.
, puedes verlo en acción 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 a la función OnClickTree.
c point pt = GetCurrentMessage()- gt; //Obtiene el punto de coordenadas del mensaje de clic actual.
m_ctrlÁrbol. screento client(amp;pt);//Convierte las coordenadas de pantalla del mouse a las coordenadas del área del cliente del control de árbol.
UINT u flags = 0;
HTREEITEM hItem = m_ctrlTree. HitTest(pt amp; u flags); // Luego haz una prueba de clic.
If ((hItem!= NULL) amp; amp(TVHT _ ONITEM ampulags))//Si la posición en la que se hizo clic está por encima de la posición del nodo,
{
m_ctrlTree. SelectItem(hItem);
//Obtiene los datos que configuramos al principio. Tenga en cuenta que es por eso que 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 comparar las cadenas para determinar en qué nodo hizo clic.
int nDat = m_ctrlTree. GetItemData(hItem);
// Luego puedes completar diferentes acciones basadas en diferentes nodos.
Cambiar (nDat)
{
Caso 1:
AfxMessageBox("Beijing");
Pausa;
Caso dos:
AfxMessageBox("Beijing-gt; Distrito de Chaoyang");
Pausa;
Caso tres:
AfxMessageBox("Beijing-gt;Distrito de Haidian");
Pausa;
Valor predeterminado:
AfxMessageBox(" ERROR " );
}
}
//Si esto no resuelve tu problema, estoy realmente sin palabras. Aquí tienes, jefe, jajajajajaja.