Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...

probleme cu ochelarii
 Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...
 Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor
 Discuții despre TVR Sport HD.

Cost abonament clinica privata

Tremura toata, dar nu de la ro...

Renault Android
 

32bit icon pentru aplicatiile VB6

- - - - -
  • Please log in to reply
9 replies to this topic

#1
ANQ

ANQ

    Junior Member

  • Grup: Members
  • Posts: 55
  • Înscris: 27.03.2007
Salut

mai este nevoie de un singur lucru ca sa incep sa lucrez mai serios cu vb6 : vreau sa schimb iconul aplicatiei cu unul 32bit .
am gasit ceva aici care isi face treaba pe jumatate ... adica imi schimba iconul cu unul 32bit dar nu cu cel pe care il vreau eu :D adica apare iconul acela ca o "fereastra" . in al 2lea rand nu se schimba deloc iconul din taskbar , asa cum spun ei .

pentru compilarea resurselor am folosit "Resource Builder" pentru ca "Resource Editor" nu vrea sa accepte iconurile

va rog sa ma ajutati , daca puteti (suna a cersit :D dar n-am ce face)
multumesc

Edited by ANQ, 05 February 2008 - 15:32.


#2
macaz

macaz

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 14.06.2007
Eu fac asa:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
	   ByVal hWnd As Long, ByVal wMsg As Long, _
	   ByVal wParam As Long, ByVal lParam As Long _
	) As Long
 
 Private Const WM_SETICON = &H80
 Private Const ICON_SMALL = 0
 
 Private Sub Form_Initialize()
 SendMessage Me.hWnd, WM_SETICON, ICON_SMALL, LoadResPicture(1, vbResIcon)
End Sub

iar dupa compilare schimb iconul cu acest program.

Simplu si eficient nu? ;)

Edited by macaz, 06 February 2008 - 04:44.


#3
ANQ

ANQ

    Junior Member

  • Grup: Members
  • Posts: 55
  • Înscris: 27.03.2007

View Postmacaz, on Feb 6 2008, 04:40, said:

Eu fac asa:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
	   ByVal hWnd As Long, ByVal wMsg As Long, _
	   ByVal wParam As Long, ByVal lParam As Long _
	) As Long
 
 Private Const WM_SETICON = &H80
 Private Const ICON_SMALL = 0
 
 Private Sub Form_Initialize()
 SendMessage Me.hWnd, WM_SETICON, ICON_SMALL, LoadResPicture(1, vbResIcon)
End Sub

iar dupa compilare schimb iconul cu acest program.

Simplu si eficient nu? ;)


fara cuvinte   :w00t:   nu ma asteptam sa mearga
multumesc mult

p.s. poate stii sa imi raspunzi si la intrebarea cu fonturile :D

Edited by ANQ, 10 February 2008 - 16:41.


#4
macaz

macaz

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 14.06.2007
Codul de pe vbAccelerator functioneaza foarte bine si isi face treaba complet, ca la carte, nu pe jumatate cum zici tu.
Recomand sa folosesti acel cod pentru ca functia LoadResPicture sufera de un bug.Daca te uiti atent pe codul de pe vbAccelerator mai precis la parametrii functiei SetIcon ai sa vezi ca al 2-lea parametru este "As String".Tu ce pui acolo cand apelezi functia?.Editorul de resurse din vb6 nu accepta iconuri pe 32 bit asa ca trebuie sa apelezi la un editor de resurse extern gen ResourceHacker,XNResourceEditor.
Daca deschizi executabilul compilat cu unul din editoarele acestea ai sa vezi o sectiune numita "Icon Group" unde fiecare icon are un numar de ordine,iar fiecare icon poate avea mai multe marimi si numar de culori folosite (ex. 16x16,32x32,48x48 pe 16 culori, 256 culori sau 32bit color) mai multe detalii aici.Primul icon din aceasta lista (1) este folosit de sistem implicit,desigur se poate adauga mai multe iconuri in aceasta lista daca este nevoie de asa ceva (asociere fisiere cu icon diferit etc.).Poti denumi un icon in aceasta lista cum vrei tu ,de exemplu primul icon din ICON_GROUP se va numi MyIcon atunci apelezi functia asa:
	 SetIcon Me.hWnd,"MyIcon",True

Recomand totusi sa nu pui nume iconurilor ci sa le numerotezi asa cum este si normal si atunci functia va fi  apelata cu o mica smecherie astfel:
	 SetIcon Me.hWnd,"#" & CStr(1),True
Unde 1 este primul icon pe care il afiseaza si Windows Explorer (poate fi si 2,3,4 etc. daca ai mai multe iconuri).
Acel "#" &CStr(1) este intr-un fel echivalentul lui MAKEINTRESOURCE din VC++.
Ca sa faci o proba deschide un proiect nou cu un singur form adaugi la proiect un modul basic (ex mIcon.bas) copii codul de pe vbAccelerator in acest modul iar in evenimentul Form_Initialize faci asa:
   Private Sub Form_Initialize()
	 SetIcon Me.hWnd,"#" & CStr(1),True
   End Sub
Salvezi proiectul ,compilezi iar apoi cu unul din editoarele de resurse mentionate schimbi iconul cu numarul de ordine 1 (singurul de altfel) cu unul pe 32Bit.Pornesti aplicatia si voila merge B) .

P.S. la intrebarea cu fonturile stiu si acolo, sunt mai multe solutii dar o sa raspund pe topicul acela daca am timp.

Edited by macaz, 11 February 2008 - 00:23.


#5
ANQ

ANQ

    Junior Member

  • Grup: Members
  • Posts: 55
  • Înscris: 27.03.2007

View Postmacaz, on Feb 11 2008, 00:20, said:

Codul de pe vbAccelerator functioneaza foarte bine si isi face treaba complet, ca la carte, nu pe jumatate cum zici tu.
Recomand sa folosesti acel cod pentru ca functia LoadResPicture sufera de un bug.Daca te uiti atent pe codul de pe vbAccelerator mai precis la parametrii functiei SetIcon ai sa vezi ca al 2-lea parametru este "As String".Tu ce pui acolo cand apelezi functia?.Editorul de resurse din vb6 nu accepta iconuri pe 32 bit asa ca trebuie sa apelezi la un editor de resurse extern gen ResourceHacker,XNResourceEditor.
Daca deschizi executabilul compilat cu unul din editoarele acestea ai sa vezi o sectiune numita "Icon Group" unde fiecare icon are un numar de ordine,iar fiecare icon poate avea mai multe marimi si numar de culori folosite (ex. 16x16,32x32,48x48 pe 16 culori, 256 culori sau 32bit color) mai multe detalii aici.Primul icon din aceasta lista (1) este folosit de sistem implicit,desigur se poate adauga mai multe iconuri in aceasta lista daca este nevoie de asa ceva (asociere fisiere cu icon diferit etc.).Poti denumi un icon in aceasta lista cum vrei tu ,de exemplu primul icon din ICON_GROUP se va numi MyIcon atunci apelezi functia asa:
	 SetIcon Me.hWnd,"MyIcon",True

Recomand totusi sa nu pui nume iconurilor ci sa le numerotezi asa cum este si normal si atunci functia va fi  apelata cu o mica smecherie astfel:
	 SetIcon Me.hWnd,"#" & CStr(1),True
Unde 1 este primul icon pe care il afiseaza si Windows Explorer (poate fi si 2,3,4 etc. daca ai mai multe iconuri).
Acel "#" &CStr(1) este intr-un fel echivalentul lui MAKEINTRESOURCE din VC++.
Ca sa faci o proba deschide un proiect nou cu un singur form adaugi la proiect un modul basic (ex mIcon.bas) copii codul de pe vbAccelerator in acest modul iar in evenimentul Form_Initialize faci asa:
   Private Sub Form_Initialize()
	 SetIcon Me.hWnd,"#" & CStr(1),True
   End Sub
Salvezi proiectul ,compilezi iar apoi cu unul din editoarele de resurse mentionate schimbi iconul cu numarul de ordine 1 (singurul de altfel) cu unul pe 32Bit.Pornesti aplicatia si voila merge B) .

P.S. la intrebarea cu fonturile stiu si acolo, sunt mai multe solutii dar o sa raspund pe topicul acela daca am timp.

am folosit codul tau si merge perfect :D si mi se pare mult mai simplu (si fara bug-uri). daca o sa am probleme , o sa folosesc codul de pe vbAccelerator . Probabil ca nu am stiut eu ce sa fac cu el  :deadtongue:

iti multumesc mult pt ajutor ! treaba asta cu iconul era singurul lucru care ma oprea sa "imi fac treaba" in vb6 . raman dator

#6
ANQ

ANQ

    Junior Member

  • Grup: Members
  • Posts: 55
  • Înscris: 27.03.2007
o noua problema !

pana acum nu am observat pt ca toate iconurile pe care le foloseam erau de fapt identice , dar de marimi diferite .
problema e ca , desi inlocuiesc iconul cu unul care contine toate marimile de care am nevoie (16x16,32x32,48x48) , iconul ferestrei este cel de 32x32 , dar redimensionat . cel de 16x16 diferit . cum fac sa rezolv si asta ?

multumesc

#7
macaz

macaz

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 14.06.2007
@ANQ ai PM.Oricum raspunsul este in postul nr.4.

#8
ANQ

ANQ

    Junior Member

  • Grup: Members
  • Posts: 55
  • Înscris: 27.03.2007

View Postmacaz, on Feb 28 2008, 15:14, said:

@ANQ ai PM.Oricum raspunsul este in postul nr.4.

multumesc pt raspuns :D am testat si merge , dar n-am avut timp sa ma uit pe cod
cred ca va trece ceva pana o sa am parte de un weekend adevarat ..  :deadtongue:
s-ar putea sa mai am ceva intrebari ...

de ex : cum ai folosit butoanele in stil xp ? pot sa fac si eu asta cu un manifest , dar efectul dispare cand rulez programul in afara debug-ului ...  :huh:

#9
Bean

Bean

    Guru Member

  • Grup: Senior Members
  • Posts: 17,477
  • Înscris: 12.11.2006

View PostANQ, on Mar 19 2008, 01:29, said:

de ex : cum ai folosit butoanele in stil xp ? pot sa fac si eu asta cu un manifest , dar efectul dispare cand rulez programul in afara debug-ului ...  :huh:
Prin "in afara debug-ului" intelegi "in IDE"?
Oricum, faci un manifest atat pentru vb cat si pentru exe-ul tau.
Advice: desi e "epoca" .NET, daca vrei sa ramai la api core, eu te sfatuiesc ca treci la Delphi 7 daca vrei power in win32 api. Stiu ca vb este o experienta unica si placuta, dar...

Edited by Bean, 19 March 2008 - 02:07.


#10
macaz

macaz

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 14.06.2007
Nu prea am inteles cum vine treaba cu "in afara debug-ului",fisierul manifest poate fi atat separat (in acelasi director cu executabilul) cat si in resurse.
Citeste aici
Eu zic ca in orice mediu vei face programele,tot trebuie sa cunosti cum lucreaza Windows-ul,care sunt regulile de baza,ce este aia o functie API,cum lucreaza o fereastra,etc.
Lucrurile se schimba rapid,apar noi medii de programare facute pentru a usura munca programatorului,dar elementele de baza raman,si e bine sa le stii ca altfel nu vezi padurea din cauza copacilor.
Inportant este sa intelegi cum functioneaza o aplicatie Win32.Restul sunt detalii care tin de limbajul de programare folosit.
Un bun inceput este Platform SDK

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate