Portalul Labview - vizualizați tema - cum să obțineți mânerul unei ferestre copil prin winapi

Bună ziua după colegii mei,
spune-mi cum să obțineți un mâner al String (mânerul ferestrei copil) în SubVI prin WinAPI (fereastra va fi singurul din SubVI. Prin urmare, în conformitate cu dadreamer ar trebui să funcționeze).






Primul pas este clar - eu numesc FindWindow și obțin mânerul SubVI. Și apoi nu înțeleg încă.

Și de ce o să-ți dai mânerul ca un șir? De fapt, el are tipul Unsigned Pointer Sized Integer, adică U64 într-un mediu pe 64 de biți și U32 într-un mediu pe 32 de biți.

De asemenea, ce doriți să faceți cu acest lucru? Poate că totul este mult mai simplu și nu trebuie să te deranjezi cu API-ul Windows.

Problema este că Nodul de proprietate interzice munca SubVI în Inline => munca lui SubVI încetinește catastrofic.
Ei bine, nu știu cum să fac VI să funcționeze rapid și să utilizeze Nodul de proprietate. De aceea am decis să lucrez cu WinAPI (va funcționa foarte repede).

Prin mâner, vreau să fac colorarea unor părți ale unui tech în String. Exemplul arată problema mea.

Igor_G a scris: Problema este că Nodul de proprietate interzice munca SubVI în Inline => munca lui SubVI încetinește catastrofic.


Aici, mai degrabă, faptul că majoritatea (90%) Property / Invoke Nodes lucrează în firul UI, este una pentru întreaga aplicație. Dar da, proprietatea specificată nu poate fi folosită în inline-subVI.

Igor_G a scris: Prin urmare, am decis sa lucrez cu WinAPI (va functiona foarte repede).


Specificați apoi clasa de ferestre pentru a minimiza probabilitatea rezultatelor false. Titlul poate fi făcut, de asemenea, dacă nu este unic, cel puțin original pentru aplicația dvs.

Igor_G a scris: Prin intermediul mânerului vreau să fac colorarea de părți ale tehnologiei în String. Exemplul arată problema mea.


Sincer, nu inteleg ce relatie are fereastra hwnd cu controlul (indicator). Cum veți picta controlul (indicatorul) cu acest mâner?

Din punctul de vedere al WinAPI, toate (sau aproape toate au un mâner). Trebuie să-mi dau un mâner pentru indicator.
NI spune că este posibil să afli prea prin intermediul WinAPI, dar nu spune cum. o (

Prin intermediul indicatorului de control pot face colorarea tech în indicatorul String folosind WinAPI și acest lucru va funcționa în linie.

Igor_G a scris: Din punctul de vedere al WinAPI toate (sau aproape toate dintre ele au mâner).


Depinde de ce. HWND sunt doar ferestre.

Igor_G a scris: Trebuie să obțin un mâner pentru indicator.


Nu înțelege. Pentru că nu-l are.

Igor_G a scris: NI spune că este posibil să se învețe prea prin WinAPI, dar nu spune cum. o (


Brad, obiectele din FP nu au mânere, în caz contrar ar fi imposibil să se facă o platformă transversală. De asemenea, WinSpy nu poate afișa nimic. Dovada, dacă sunteți sigur de contrariul.

Igor_G a scris: Prin mânerul indicatorului pot face o colorare a tehnicii în indicatorul String cu WinAPI și acest lucru va funcționa în linie.


Între timp, noroc în implementarea soluției.

ZY dar totusi, sa lucrezi cu GUI in timpul subrutinelor critice - nu este bun.

Depinde de ce. HWND sunt doar ferestre.


Îmi pare rău, dar permiteți-mi să nu fiu de acord cu dvs. Citiți cu atenție pagina 14 scanată.

Nu înțelege. Pentru că nu-l are.

Brad, obiectele din FP nu au mânere, în caz contrar ar fi imposibil să se facă o platformă transversală. De asemenea, WinSpy nu poate afișa nimic. Dovada, dacă sunteți sigur de contrariul.


Cross-platforma este furnizată pentru că Charles Simonai era departe de a fi o persoană proastă - (a se vedea pagina 4 scanată).







Aș dori să închei această dispută academică și să mă întorc la întrebarea inițială.

CUM SE DETERMINĂ ELEMENTUL DE MÂINARE PENTRU FP?
Faptul că acest lucru este posibil este un fapt. Acest lucru a fost raspuns de catre NI Support si a dat un link catre aceasta pagina. Acesta este același lucru pe care l-am citit undeva în LAVA (din păcate nu găsesc link-ul de azi).
Nu mai are cineva idei? Nu a făcut-o cu adevărat sau cine nu a încercat?

. Attachments page Str-4-5.pdf 4 (1.15 MB) Download :. Str-14-15.pdf 22 pagina 14 (1,21 MB) Downloads: 20

Un inginer este un intelect deschis luminos, un umor liber și nu ofensator, aceasta este ușurința și lățimea gândirii. Este o reproducere bună, o subtilitate a gusturilor, un discurs bun, o coordonare fără probleme și fără cuvinte greșite.
-AI Soljenitsyn

Igor_G a scris: Ne pare rău, dar nu vreau să fiu de acord cu tine. Citiți cu atenție pagina 14 scanată.


Mă întreb cu ce nu ați fost de acord? Am scris totul corect. Încă o dată:

dadreamer a scris: Смотря какой. HWND sunt doar ferestre.


Faptul că în mânerele Windows sunt utilizate pe scară largă, nu este un secret pentru orice utilizator avansat. Și nimeni nu a negat vreodată acest lucru. Și aici tipul de mâner HWND gestionează numai ferestrele. Citează de aici:

Windows sunt obiecte - au atât cod cât și date - dar nu sunt clase C ++. În schimb, un program se referă la o fereastră utilizând o valoare numită un mâner. Un mâner este un tip opac. În esență, este doar un obiect. Puteți vedea Windows ca având o masă mare de toate. Utilizează acest tabel pentru a căuta ferestrele prin mânere. (Cum să vezi ce funcționează pe plan intern nu este important.) Tipul de date pentru mânerele ferestrelor este HWND. care este de obicei pronunțată "aitch-wind". Mânerele pentru ferestre sunt create de: CreateWindow și CreateWindowEx.

Deci, un HWND este un HANDLE, dar nu toate HANDLE sunt HWND. De fapt:

typedef void * PVOID;
typedef HANDLE;
typedef HANDLE HWND;


Și astfel de citări pot fi tipărite o mie, dacă se dorește, pentru că acestea sunt adevăruri comune.
Apropo, pe aceste pagini ale cărții nu există nici un cuvânt despre cookie-urile cookie-ului magic. Apropo, astfel de mânere nu trebuie să fie cartografiate pe orice obiect din memorie (acestea nu pot fi).

Igor_G a scris (a): Kross-platformă cu condiția de ce Charles Simonai era departe de a fi om prost - (a se vedea pagina scanată 4 ..).


Ce legătură are acest Charles Simonai cu cross-platforming.
Citat din cartea ta:

În orice carte dedicată de programare pe Windows, veți găsi menționat faptul că unul dintre primul break-handler pentru Windows Simonai Charles, un maghiar de naștere, a început să folosească în programele lor metoda variabilelor de denumire,-Koto ing mai târziu numit sistemul maghiar.


Și cum să înțelegi asta? Googling ceea ce este o platformă transversală. Și ceea ce trebuie să faceți atunci când scrieți un program (mai ales ca acesta) pentru ao realiza.

CUM SE DETERMINĂ ELEMENTUL DE MÂINARE PENTRU FP?
Faptul că acest lucru este posibil este un fapt. Acest lucru a fost raspuns de catre NI Support si a dat un link catre aceasta pagina. Acesta este același lucru pe care l-am citit undeva în LAVA (din păcate nu găsesc link-ul de azi).


Repet - obiectele de pe FP nu au mâner! Nu mă credeți pe mine și pe Vitekkz88 - acestea sunt cuvintele lui Rolf Kalbermatter. care a mâncat un câine pe aceste lucruri (1. 2):

După cum a spus Chaos, pur și simplu nu poți face asta. Toate obiectele din panoul frontal din LabVIEW sunt de fapt obiecte LabVIEW și nu se bazează absolut pe controalele standard Windows. Deci, nu există nici un Windows HWND asociat cu ei deloc.

Nu puteți obține un HWND dintr-un control LabVIEW. Ele nu sunt încă implementate. Singurul lucru din LabVIEW care are un mâner asociat Windows sunt panourile în sine.


Dacă acest lucru nu este suficient - luați WinSpy sau built-in LV Window Monitor și vedeți ce mânere sunt returnate.
Un NI a aruncat doar referindu-se la ambalajele (și deja depășite) unele funcții WinAPI - cum ar fi, „nu ne deranjează cu sarcinile obscure“

Igor_G a scris: Nu mai are cineva idei? Nu a făcut-o cu adevărat sau cine nu a încercat?


Și de ce ar avea cineva nevoie de asta? Apropo, ați primit deja o idee:

dadreamer a scris: și încă, pentru a lucra cu GUI în timpul subrutinelor critice - nu este bun.


Cu toate acestea, nu l-ați văzut. Sau nu a vrut să. Din nou încercați să intrați în casă, nu ca toți oamenii, ci pe pod. Câte similitudini ați avut deja. Apoi, compilatorul urma să se optimizeze, apoi să refacă pe cele existente pentru a lucra cu fișiere. Totul este fantastic!
În cazul tău, ar fi suficient să suporți munca cu gui într-un fir separat și să sincronizați prin cozi / notificatori. Există o mulțime de exemple pe forum. O alta solutie, poate mai exotica, ar fi aceea de a scrie intregul GUI intr-un mediu diferit si aranja-l ca o biblioteca. Apoi, veți primi independența thread-ului de procesare din firul UI (DLL este reentrant, desigur). Ei bine, doriți să continuați să bateți cu un microscop - este de până la tine.







Articole similare

Trimiteți-le prietenilor: