ERRO NA CHAMADA DA API EM 32 BITES

PROSOFT 11/01/2024 12:22:22
#502929
Alguem pode me ajudar e me dizer por que essa função funciona correto quando executada em plataforma AnyCPU
Quando tento compilar na plataforma x86 retorna esse erro:

System.AccessViolationException: 'Tentativa de leitura ou gravação em memória protegida. Normalmente, isso é uma indicação de que outra memória está danificada.'

//Essa rotina tem a função de remover toos os checkbox de um treeview que não são a extremidade do nó
private void HideCheckBox(TreeView tvw, TreeNode node) {
TVITEM tvi = new TVITEM();
tvi.hItem = node.Handle;
tvi.mask = TVIF_STATE;
tvi.stateMask = TVIS_STATEIMAGEMASK;
tvi.state = 0;
SendMessage(tvw.Handle, TVM_SETITEM, IntPtr.Zero, tvi); //Aqui ocorre o erro
}

//Declarações
public struct TVITEM {
public int mask;
public IntPtr hItem;
public int state;
public int stateMask;
public string lpszText;
public int cchTextMax;
public int iImage;
public int iSelectedImage;
public int cChildren;
public IntPtr lParam;
}
public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, TVITEM lParam);
KERPLUNK 11/01/2024 12:30:11
#502930
Resposta escolhida
Nossa, certamente esse é um jeito muito esquisito. Quem sabe você explica direitinho o que quer fazer. Se o treeview está na sua aplicação, certamente você tem total controle sobre ele, o que elinima a necessidade de usar uma API pra isso.
PROSOFT 11/01/2024 14:13:39
#502932
Alterado em 11/01/2024 14:14:57 Quero remover todas as checkbox da linha para os itens. Quero deixar o checkbox somente no último item de cada elemento
Não conheço um modo de fazer isso pelo próprio controle

KERPLUNK 11/01/2024 16:44:55
#502933
Faça um override do draw, aqui mostra mais ou menos
PROSOFT 11/01/2024 19:42:56
#502934
Pessoal
Resolvido o problema. Foi só mudar essas duas linhas
public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, ref TVITEM lParam);

e

SendMessage(node.TreeView.Handle, TVM_SETITEM, IntPtr.Zero, ref tvi);
PROSOFT 25/01/2024 12:00:28
#502973
Tudo funcionando certinho
Tópico encerrado , respostas não são mais permitidas