check-uirea mai multor butoane intr-un menubar

Intrebari despre programarea cu VC++ incluzand mediul de dezvoltare, instalare, setari, debugger, compilator, linker si documentatie.
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: check-uirea mai multor butoane intr-un menubar

Post by Ovidiu Cucu » 09 Oct 2012, 09:46

neagu_laurentiu wrote:[...] Ori din perspectiva asta eu am venit cu solutia.
[ off-topic ]
Ok, no problem. Dicutam si cu cat apar mai multe solutii, cu atat avem de unde alege. Totu-i sa stim s-o alegem pe cea mai buna. ;)



User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: check-uirea mai multor butoane intr-un menubar

Post by black_atus » 09 Oct 2012, 11:31

da. aveti dreptate.cand sunt multe termene limita la mijloc probabil e cea mai buna solutie.mai ales ca bucatile de cod au probabil si documentatie cu ele si daca e ceva stricat acolo e de datoria celui care vinde produsul sa il repare.
Cu stima,
Daniel Constantin

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: check-uirea mai multor butoane intr-un menubar

Post by black_atus » 09 Oct 2012, 11:34

Am reusit sa implementez solutia lui ovidiu si merge foarte bine.
Singura problema e ca nu isi face refresh meniul si unele butoane nu imi apar decat cand trec cu mouse-ul pe deasupra dar o sa rezolv asta.
Cu stima,
Daniel Constantin

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: check-uirea mai multor butoane intr-un menubar

Post by Ovidiu Cucu » 09 Oct 2012, 11:47

black_atus wrote:da. aveti dreptate.cand sunt multe termene limita la mijloc probabil e cea mai buna solutie.mai ales ca bucatile de cod au probabil si documentatie cu ele si daca e ceva stricat acolo e de datoria celui care vinde produsul sa il repare.
Corect, insa in practica de multe ori documentatia pentru "bucati de cod" luate de aiurea sucks, o componenta "custom" de-a gata nu-i exact ceea ce ne trebuie (sau nu satisface exact "moftul catorva clienti"), iar daca "e ceva stricat acolo" si suntem norocosi ca se asigura support, s-ar putea sa asteptam mult si bine pana cand cel care vinde produsul "isi face datoria si-l repara". ;)

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: check-uirea mai multor butoane intr-un menubar

Post by neagu_laurentiu » 09 Oct 2012, 13:08

Ovidiu pui in discutie situatii extreme. In realitate ai codul sursa, iti bagi nasul si rezolvi (nu stiu daca-i cazul sa nu mearga ceva conform documentatiei) sau construiesti peste acolo unde vrei extindere (una e sa pleci de "la zero" si alta-i de la N+1).

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: check-uirea mai multor butoane intr-un menubar

Post by black_atus » 09 Oct 2012, 15:22

As avea totusi o intrebare.
Nu am mai folosit niciodata kook-uri. Am citit putin pe msdn dar inca nu mi-am dat seama.
Chiar merge sa introduci subrutine in alt proces. Suna a hack pentru mine....
Ma puteti lamuri va rog :whorship:
Multumesc anticipat :D
Cu stima,
Daniel Constantin

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: check-uirea mai multor butoane intr-un menubar

Post by black_atus » 09 Oct 2012, 15:24

Asa se pot intercepta toate mesajele dintr-un calculator ? gen keylogger ? sau ma insel ?
Cu stima,
Daniel Constantin

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: check-uirea mai multor butoane intr-un menubar

Post by Ovidiu Cucu » 09 Oct 2012, 17:36

Asa cum e setat aici

Code: Select all

   m_hookInfo.hHook = ::SetWindowsHookEx(WH_MSGFILTER, // hook type 
      &CMainFrame::MessageProc,                        // hook procedure
      NULL,                                            // module handle
      GetCurrentThreadId());                           // current thread

este vorba de un hook local unui thread creat de procesul curent (sa zicem, din aplicatia ta).
NU se face "injectie" in alte procese. Pentru aceea ti-ar trebui un hook global al carui procedura este exportata dintr-un DLL.
Din aplicatia ta, un hook global s-ar instala, de exemplu, cam asa:

Code: Select all

   HMODULE hModule = ::LoadLibrary(_T("my_hook.dll")); 
   if(NULL != hModule)
   {
      HOOKPROC hookProc = (HOOKPROC)::GetProcAddress(hModule, "MessageProc");
      if(NULL != hookProc)
      {
         hHook = ::SetWindowsHookEx(WH_MSGFILTER, hookProc, hModule, 0);
      }
   }


Pentru keyloggere se poate folosi (printre alte N metode) un hook low level (ex. tip WH_KEYBOARD_LL). Iarasi nu-i cazul aici.
Deci n-am facut absolut nici o "heckareala" iar o scula de securitate (daca de asta ti-era frica) n-ar avea ce sa caraie.

Vezi mai cu atentie SetWindowsHookEx si Using Hooks in documentatie sau MSDN / Windows Dev Center.

In fine, MFC-ul insusi e plin de hook-uri. ;)

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: check-uirea mai multor butoane intr-un menubar

Post by Ovidiu Cucu » 10 Oct 2012, 12:27

neagu_laurentiu wrote:Ovidiu pui in discutie situatii extreme. In realitate ai codul sursa, iti bagi nasul si rezolvi (nu stiu daca-i cazul sa nu mearga ceva conform documentatiei) sau construiesti peste acolo unde vrei extindere (una e sa pleci de "la zero" si alta-i de la N+1).
[ off-topic ]

Depinde cine si cum a facut acel N din N+1.
Presupun ca nu prea ai avut in brate un proiect C++ cu N gata facut de... "programatori" care mai bine s-ar apuca noaptea de web design dupa template-uri culese de pe net sau, mai bine, de afaceri cu zarzavat.
Te-ai fi rugat cu lacrimi fierbinti la Sfanta Cuvioasa Parascheva sa faca Minune, ca sa dispara N si sa ramana 0 (zero). :D

Din pacate, "extreme" din astea se intalnesc. Uneori e mai bine sa faci ceva "in house" (ma refer la firmele de software, nu la alea care vand zarzavat si au IT-isti), decat sa carpesti la infinit cod scris cu chicioarele. Totul e sa ai cu cine.
In fine, fiecare intelege in felul lui unde se termina N si de unde incepe N+1. ;)

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: check-uirea mai multor butoane intr-un menubar

Post by neagu_laurentiu » 10 Oct 2012, 13:16

Ovidiu Cucu wrote:alea care vand zarzavat si au IT-isti
Eu vorbesc de exemplu de firme precum BCGSoft (unde chiar MS a introdus de la ei in MFC acel feature pack in VC++ 2008 si nu a dezvoltat intern) iar tu o dai tot in extreme. Si nu e singura firma serioasa ce se ocupa cu asa ceva.

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: check-uirea mai multor butoane intr-un menubar

Post by Marius Bancila » 10 Oct 2012, 13:30

Ma bag si eu tarziu, dar un exemplu de un astfel de meniu e in Visual Studio la toolbaruri la Add or Remove Buttons. Ti se deschide un meniu contextula de unde poti selecta sau deselecta ce butoane sa apara pe toolbar.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: check-uirea mai multor butoane intr-un menubar

Post by Ovidiu Cucu » 10 Oct 2012, 14:12

neagu_laurentiu wrote:
Ovidiu Cucu wrote:alea care vand zarzavat si au IT-isti
Eu vorbesc de exemplu de firme precum BCGSoft (unde chiar MS a introdus de la ei in MFC acel feature pack in VC++ 2008 si nu a dezvoltat intern) iar tu o dai tot in extreme. Si nu e singura firma serioasa ce se ocupa cu asa ceva.
Ok, stiu asta insa nu inteleg ce tot insisti sa ma convingi. Daca intreaba unul unde se pune punct si virgula intr-un program C++ eu sa-i raspund "da parale si te-ai scos"? Sa ne bagam picioarele in el forum de programare si sa facem unul de marketing si publicitate?
Poate daca punem aici un banner cu BCGSoft si in rest discutam numai despre ce mai e nou pe la ei, castigam si noi un ban, nu-i asa? :)

Hai te rog, serios! Sa incheiem discutia asta pe langa subiect si sa vedem ce trebuie sa faca un programator ca sa rezolve problema din OP si nu ce-ar hotara daca intrebi asa ceva un manager, un contabil, un marketor, Nea Ghita de la Magazie si altii ca ei.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: check-uirea mai multor butoane intr-un menubar

Post by Ovidiu Cucu » 10 Oct 2012, 14:22

Marius Bancila wrote:Ma bag si eu tarziu, dar un exemplu de un astfel de meniu e in Visual Studio la toolbaruri la Add or Remove Buttons. Ti se deschide un meniu contextula de unde poti selecta sau deselecta ce butoane sa apara pe toolbar.
Cool! Acuma l-am vazut si eu prima data (la VS nu folosesc toolbar-urile standard ci doar imi adaug butonelele des folosite la bara de menu). Deci sunt locuri unde e util un asemenea meniu, nu numai pentru "mofturi de client". :)

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: check-uirea mai multor butoane intr-un menubar

Post by black_atus » 11 Oct 2012, 12:54

Va referiti in VS la View -> Toolbars unde sunt listate toate toolbarurile ?
Daca da raspunsul este afirmativ. Se pare ca sunt persoane care vor sa-si selecteze toolbarurile doar dintr-un singur pas, adica sa nu-i dispara fereastra de popup dupa ce da click pe un buton pentru a afisa sau nu un toolbar.
Cu stima,
Daniel Constantin

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: check-uirea mai multor butoane intr-un menubar

Post by black_atus » 11 Oct 2012, 13:03

Daca stau sa ma gandesc mai bine, are oarecum logica cerinta de a putea selecta mai multe toolbaruri dintr-un pas. Pentru ca intr-o aplicatie foarte complexa cu sa zicem mai mult de 30 de toolbaruri si utilizatorul vrea sa deselecteze 5 si sa selecteze 7 trebuie sa dea o multime de click-uri. Bine ca inca nu o vad ca o utilitate atat de importanta presupunand ca nu trebuie sa faci in fiecare zi o asa customizare a toolbarurilor care sa fie vizibile sau nu. Vad ca in VS sunt in jur de 30 de toolbaruri standard. Poate daca ar lucra mai multe persoane de la acelasi calculator cu toolbaruri diferite sa zici ca ar face un proces de selectie al toolbarurilor zilnic atunci as vedea comportamentul descris de mine mai sus util.
Cu stima,
Daniel Constantin

Post Reply