abonnement Unibet Coolblue
pi_30534909
ik wil een knop (cmd) mijn muis laten volgen (met vertraging), maar de enige manier die ik kan bedenken is zoals hieronder.
Dit heeft echter wat probleempjes, want zodra ik de muis stilhoudt, en de knop is nog niet bij mijn muis aangekomen (door de vertraging, wat een vloeiend effect zou moeten geven), dan staat de knop ook stil. Ook zou ik graag hebben dat het muis volgen niet stopt zodra ik boven een label sta. (dit komt omdat de eventhandler aan form gekoppeld is)

m.a.w hoe kan ik een object mijn muis laten volgen, al dan niet met vertraging, ongeacht of ik mijn muis beweeg of dat ik naar een ander object wijs?

vraagje 2: kan ik met een scriptje de muis pointer verplaatsen?

1
2
3
4
5
Private Sub Form_Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  
   cmd.Left = cmd.Left + (X - cmd.Left) / 100
   cmd.Top = cmd.Top + (Y - cmd.Top) / 100
End Sub
Imperare sibi maximum imperium est
  dinsdag 13 september 2005 @ 10:54:26 #2
2671 Aaargh!
Gebruik op eigen risico.
pi_30535068
Eerst een algemene tip: gebruik geen Visual Basic, het is nergens de juiste oplossing voor.

Dan je vragen:
1) Je kan het verplaatsen van het object het beste in een extra thread afhandelen, dat is eigenlijk de enige nette oplossing, maar aangezien VB geen echte multithreading kent ben je de sjaak. De dichtste benadering die je in VB kan maken is een Timer gebruiken en daarin de positie v/h object aanpassen.

2) Er zitten functies in de Win32 API hiervoor, helaas voor jou is Win32 een teringbende, dus veel plezier met uitzoeken.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
pi_30535382
timer is op zich wel optie ja....bedankt voor de tip
win32 API?
Imperare sibi maximum imperium est
  dinsdag 13 september 2005 @ 11:25:18 #4
6654 Lorn
vergeten door iedereen
pi_30536026
quote:
Op dinsdag 13 september 2005 10:54 schreef Aaargh! het volgende:
Eerst een algemene tip: gebruik geen Visual Basic, het is nergens de juiste oplossing voor.

Dan je vragen:
1) Je kan het verplaatsen van het object het beste in een extra thread afhandelen, dat is eigenlijk de enige nette oplossing, maar aangezien VB geen echte multithreading kent ben je de sjaak. De dichtste benadering die je in VB kan maken is een Timer gebruiken en daarin de positie v/h object aanpassen.

2) Er zitten functies in de Win32 API hiervoor, helaas voor jou is Win32 een teringbende, dus veel plezier met uitzoeken.
Kun je die meningen ook beargumenteren of praat je gewoon na wat je andere mensen hebt horen roepen?

Ik zal de eerste zijn die toegeeft dat VB6 niet de meest geweldige taal is die je kunt gebruiken maar om nou te roepen dat het nergens de juiste oplossing voor is slaat nergens op. VB6 is uitermate geschikt als je een 'simpele' Windows applicatie wilt gaan maken of als je bijvoorbeeld informatie wilt kunnen bewerken uit een database. Je hebt vrij snel een GUI staan en de taal zelf vrij ongecompliceerd.

Ik snap helemaal niet waar je opmerking vandaan komt dat API calls een teringbende zijn met VB6. Ik heb een heleboel gedaan met VB6 en API calls en dit gaat vrijwel altijd zonder problemen. Het enigste dat soms een probleem geeft is de API viewer die bij VB6 wordt geleverd, deze is niet helemaal compleet. Zodra je echter de Windows Platform SDK hebt geinstalleerd heb je alle informatie tot je beschikking. Wellicht is API en VB6 geen goede combinatie voor de beginnende programmeur maar als je een beetje verstand van zaken hebt kom je er echt wel uit.
It's not the despair, Laura. I can take the despair. It's the hope.
  dinsdag 13 september 2005 @ 11:32:50 #5
2671 Aaargh!
Gebruik op eigen risico.
pi_30536236
quote:
Op dinsdag 13 september 2005 11:25 schreef Lorn het volgende:

[..]

Kun je die meningen ook beargumenteren of praat je gewoon na wat je andere mensen hebt horen roepen?
Ja.
quote:
Ik zal de eerste zijn die toegeeft dat VB6 niet de meest geweldige taal is die je kunt gebruiken maar om nou te roepen dat het nergens de juiste oplossing voor is slaat nergens op.
Er is voor elk willekeurig probleem een handigere taal te bedenken dan VB
quote:
VB6 is uitermate geschikt als je een 'simpele' Windows applicatie wilt gaan maken of als je bijvoorbeeld informatie wilt kunnen bewerken uit een database.
Klopt, maar Delphi is er nog iets geschikter voor.
quote:
Je hebt vrij snel een GUI staan en de taal zelf vrij ongecompliceerd.
Totdat je iets nodig hebt wat niet in de taal zit, en dan ben je de sjaak.
Bovendien is VB erg verraderlijk, je moet erg goed kunnen programmeren voordat je een net programma kan maken in VB, en laat VB nu net populair zijn bij mensen die niet kunnen programmeren.
quote:
Ik snap helemaal niet waar je opmerking vandaan komt dat API calls een teringbende zijn met VB6.
Dat zeg ik ook niet, ik zeg dat de Win32 API in het algemeen een teringbende is.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
  dinsdag 13 september 2005 @ 11:52:34 #6
6654 Lorn
vergeten door iedereen
pi_30536731
quote:
Op dinsdag 13 september 2005 11:32 schreef Aaargh! het volgende:

Dat zeg ik ook niet, ik zeg dat de Win32 API in het algemeen een teringbende is.
Ik had uit je opmerking niet gehaald dat je het over de Win32 API in het algemeen had, ik het gelezen als zijnde dat de TS pech had omdat voor VB6 gebruikers de API een teringbende was. Misverstandje dus.

Ik ben het er echter niet mee eens dat voor ieder willekeurig probleem een betere taal te bedenken is als VB. VB6 is uitstekend geschikt voor de wat simpelere applicaties en interactie met een database. Natuurlijk kan het met Delphi ook, de syntax van Delphi is ook wat mooier dan die VB6, maar qua functionaliteit kom je bij kleinere applicaties binnen VB6 niks te kort.

Dat VB er verraderlijk is valt volgens mij ook nog wel, het is in ieder geval een stuk vriendelijker dan een taal als Delphi of C/C++. Ik denk dat elke taal wel zijn valkuilen heeft en als je niet goed weet wat je aan het doen bent kun je met iedere taal wel grote schade aanrichten.

VB6 heeft zijn beperkingen en zolang je daar niet te veel buiten wilt treden is het een prima taal. Je moet inderdaad geen VB6 gaan gebruiken als je bijvoorbeeld een Windows service wilt gaan maken. Het kan wel maar een goed idee is het waarschijnlijk niet. Maar zoals met alles geldt ook hier dat je de juiste tools voor de job moet selecteren om de klus te klaren.
It's not the despair, Laura. I can take the despair. It's the hope.
  dinsdag 13 september 2005 @ 12:14:29 #7
72762 marq
Mr. Psychonaut
pi_30537307
VB... klote taal!! ik haat het!! vooral de 64KB array limiet!!! RAAAH

maar goed, wat threading betreft;
dit kan zeker wel. de API voorziet hierin.. alleen is het een beetje lastig om het voor elkaar te krijgen. mijn geheugen heeft me in de steek gelaten wat vb betreft (en gelukkig maar) maar google eens naar threading en vb6.0

timer is idd de simpelste oplossing want het is nogal logisch dat als je muist stil staat, je geen event krijg enzo

[ Bericht 0% gewijzigd door marq op 13-09-2005 12:26:05 ]
Sigmoid: f(x) = 1 / (1 + 2.718281828458# ^ -x)
  dinsdag 13 september 2005 @ 12:46:53 #8
2671 Aaargh!
Gebruik op eigen risico.
pi_30538101
quote:
Op dinsdag 13 september 2005 11:52 schreef Lorn het volgende:
(...) qua functionaliteit kom je bij kleinere applicaties binnen VB6 niks te kort.
Helaas hebben dat soort applicaties de neiging om uit te groeien tot een onvoorzien grote applicatie.
quote:
Dat VB er verraderlijk is valt volgens mij ook nog wel, het is in ieder geval een stuk vriendelijker dan een taal als Delphi of C/C++.
Als je al kan programmeren dan boeit het geen ene zak of je in Pascal, C/C++ of VB je code schrijft, als je niet kan programmeren dan wordt het in VB een zooitje. Vooral omdate programmeer-n00bs bij VB de neiging hebben om eerst de interface in elkaar te sleuren-pleuren enniet eerst nadenken over de structuur v/d applicatie.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
  dinsdag 13 september 2005 @ 13:33:16 #9
6654 Lorn
vergeten door iedereen
pi_30539288
quote:
Op dinsdag 13 september 2005 12:46 schreef Aaargh! het volgende:

Als je al kan programmeren dan boeit het geen ene zak of je in Pascal, C/C++ of VB je code schrijft, als je niet kan programmeren dan wordt het in VB een zooitje. Vooral omdate programmeer-n00bs bij VB de neiging hebben om eerst de interface in elkaar te sleuren-pleuren enniet eerst nadenken over de structuur v/d applicatie.
Je wilt toch niet serieus beweren dat het schrijven van een goede applicatie in C/C++ makkelijker is dan VB6? Het is vrij makkelijk om een foutje te maken met pointers in C/C++, daarom alleen al is VB6 een stuk makkelijker. Ook het aanvragen en vrijgeven van geheugen is iets waar je in C/C++ veel meer moeite voor moet doen.

Verder een beetje flauw om een taal constant af te rekenen op een deel van haar gebruikers. VB6 trekt inderdaad veel mensen aan met weinig ervaring maar dat doet toch geen afbreuk aan de kwaliteiten van een taal? Je zou die nieuwelingen eens een C/C++ applicatie laten schrijven, moet je eens gaan kijken wat er dan als resultaat uit komt? Is C/C++ dan opeens ook waardeloos geworden?

Ik proef vooral een ontzettend vooroordeel tegenover een deel van de gebruikers van VB6, heb eigenlijk nog geen enkel inhoudelijk argument gehoord waarom VB6 voor geen enkele oplossing een geschikte taal zou zijn.
It's not the despair, Laura. I can take the despair. It's the hope.
pi_30539359
uh ja... wat schiet ik hier mee op?
Imperare sibi maximum imperium est
  dinsdag 13 september 2005 @ 13:47:22 #11
6654 Lorn
vergeten door iedereen
pi_30539618
quote:
Op dinsdag 13 september 2005 13:36 schreef de_priester het volgende:
uh ja... wat schiet ik hier mee op?
Niet zo heel erg veel, sorry
It's not the despair, Laura. I can take the despair. It's the hope.
  dinsdag 13 september 2005 @ 13:47:23 #12
2671 Aaargh!
Gebruik op eigen risico.
pi_30539619
quote:
Op dinsdag 13 september 2005 13:33 schreef Lorn het volgende:

[..]

Je wilt toch niet serieus beweren dat het schrijven van een goede applicatie in C/C++ makkelijker is dan VB6? Het is vrij makkelijk om een foutje te maken met pointers in C/C++, daarom alleen al is VB6 een stuk makkelijker. Ook het aanvragen en vrijgeven van geheugen is iets waar je in C/C++ veel meer moeite voor moet doen.
Ligt er aan wat voor applicatie je gaat ontwikkelen. Tuurlijk is het gedoe met pointers wat lastig, maar als je een grote applicatie gaat schrijven in VB .. dat is gewoon niet eens mogelijk, er missen gewoon te veel faciliteiten. OO bijvoorbeeld, of een leesbare syntax.
quote:
Verder een beetje flauw om een taal constant af te rekenen op een deel van haar gebruikers. VB6 trekt inderdaad veel mensen aan met weinig ervaring maar dat doet toch geen afbreuk aan de kwaliteiten van een taal? Je zou die nieuwelingen eens een C/C++ applicatie laten schrijven, moet je eens gaan kijken wat er dan als resultaat uit komt? Is C/C++ dan opeens ook waardeloos geworden?
C/C++ is minder gevaarlijk juist omdat je kennis moet hebben van programmeren voordat je begint. (Alhoewel dingen al VC++ en Borland C++ builder hetzelfde gevaar geven als VB). Iemand leren programmeren met VB is vergelijkbaar met iemand leren fietsen op een fiets met zijwieltjes, bovenaan een stijle helling.
En voor mensen die wel kunnen programmeren is VB wat beperkt.
quote:
Ik proef vooral een ontzettend vooroordeel tegenover een deel van de gebruikers van VB6, heb eigenlijk nog geen enkel inhoudelijk argument gehoord waarom VB6 voor geen enkele oplossing een geschikte taal zou zijn.
Niet zozeer niet geschikt, maar niet het meest geschikt.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
pi_30539850
tussen de discussie door misschien....
is het mogelijk een object te plaatsen dat je niet ziet, geheel boven alle andere objecten,
maar die wel een mousemove event kan triggeren?

(ff kort gezegd, als ik een label bovenop een knop wil zetten blijft altijd de knop zichtbaar, en schuift het label eronder. ik wil dat dus andersom)
Imperare sibi maximum imperium est
pi_30540057
quote:
Op dinsdag 13 september 2005 13:56 schreef de_priester het volgende:
tussen de discussie door misschien....
is het mogelijk een object te plaatsen dat je niet ziet, geheel boven alle andere objecten,
maar die wel een mousemove event kan triggeren?

(ff kort gezegd, als ik een label bovenop een knop wil zetten blijft altijd de knop zichtbaar, en schuift het label eronder. ik wil dat dus andersom)
Een frame met .visible = false?
  dinsdag 13 september 2005 @ 14:13:11 #15
2671 Aaargh!
Gebruik op eigen risico.
pi_30540274
quote:
Op dinsdag 13 september 2005 13:56 schreef de_priester het volgende:
tussen de discussie door misschien....
is het mogelijk een object te plaatsen dat je niet ziet, geheel boven alle andere objecten,
maar die wel een mousemove event kan triggeren?

(ff kort gezegd, als ik een label bovenop een knop wil zetten blijft altijd de knop zichtbaar, en schuift het label eronder. ik wil dat dus andersom)
Was er niet een of andere setting dat het form altijd alle events eerst krijgt ?
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
pi_30540319
die setting van aargh zou zéker moeten werken... maar waar zit die...
frame die niet visible is werkt niet blijkbaar...
alles dat niet visible is kan ook niet event triggeren bij mouseover
Imperare sibi maximum imperium est
pi_30540351
maar los van dat feit, tis toch belachelijk dat ik niet zelf mag uitmaken of ik een label over een knop heen zet?
Imperare sibi maximum imperium est
pi_30540497
quote:
Op dinsdag 13 september 2005 14:16 schreef de_priester het volgende:
maar los van dat feit, tis toch belachelijk dat ik niet zelf mag uitmaken of ik een label over een knop heen zet?
rechtermuisknop op knop, send to background...
pi_30540718
werkt niet! had ik al geprobeerd
Imperare sibi maximum imperium est
  dinsdag 13 september 2005 @ 14:41:06 #20
2671 Aaargh!
Gebruik op eigen risico.
pi_30541111
quote:
Op dinsdag 13 september 2005 14:16 schreef de_priester het volgende:
maar los van dat feit, tis toch belachelijk dat ik niet zelf mag uitmaken of ik een label over een knop heen zet?
Tja, daar loop je dan keihard tegen de beperkingen van VB aan, zowieso het feit dat je in VB alle interface elementen op een vaste plek zet is niet helemaal netjes. Wat je eigenlijk wilt is iets zoals de constructie die Java gebruikt met LayoutManager's
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
pi_30552663
Ik werk al jaren met VB 6 en ben er tevreden over.
Zoals aangegeven is het een prima taal om 'simpele' applicaties mee te schrijven. En je hebt veel minder tijd nodig dan als je hetzelfde programma in C++ wilt schrijven.
Ik ben nog nooit tegen een beperking van VB opgelopen die ik niet op andere manier kon oplossen.

En over de leesbaarheid, van een win32 C++ of een MFC programma is de leesbaarheid heel wat beroerder dan in VB. Wat ik wel jammer vind is dat VB niet volledig OOP is, vooral overerving zou een mooie aanvulling zijn
Are you nuts??
pi_30552818
quote:
VB... klote taal!!
Of je leert eerst eens programmeren
quote:
ik haat het!! vooral de 64KB array limiet!!! RAAAH
Weer een opmerking van iemand die mee loopt te schreeuwen.
Geef eens een voorbeeld van wanneer je een array nodig zou hebben groter als 64KB
Are you nuts??
  woensdag 14 september 2005 @ 00:53:34 #23
2671 Aaargh!
Gebruik op eigen risico.
pi_30560477
quote:
Op dinsdag 13 september 2005 21:14 schreef whosvegas het volgende:
(...)
Ik ben nog nooit tegen een beperking van VB opgelopen die ik niet op andere manier kon oplossen.
Maar dan werkt je app dus ondanks de taal ipv dankzij de taal.
quote:
En over de leesbaarheid, van een win32 C++ of een MFC programma is de leesbaarheid heel wat beroerder dan in VB.
Da's ook bagger ja. Zoals gezegd: de windows API's zijn een absolute puinhoop.

Kijk eens naar Java code, dat is tenminste lekker helder. Ik programmeer veel tegen allerlei server applicaties en dat is allemaal Java tegenwoordig, heerlijk.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
  woensdag 14 september 2005 @ 00:54:12 #24
2671 Aaargh!
Gebruik op eigen risico.
pi_30560495
quote:
Op dinsdag 13 september 2005 21:18 schreef whosvegas het volgende:
(..)
Weer een opmerking van iemand die mee loopt te schreeuwen.
Geef eens een voorbeeld van wanneer je een array nodig zou hebben groter als 64KB
Er zijn uberhaupt maar zeer weinig situaties waarin je een Array wilt gebruiken.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
  woensdag 14 september 2005 @ 10:46:35 #25
72762 marq
Mr. Psychonaut
pi_30565930
quote:
Op woensdag 14 september 2005 00:54 schreef Aaargh! het volgende:

[..]

Er zijn uberhaupt maar zeer weinig situaties waarin je een Array wilt gebruiken.
wat dacht je van stats afhandelen? nee, geen boodschappenlijsje van moe maar in het begin al duizenden items... DUH

en dan durf je ook nog te zeggen dat er weinig situaties zijn waarinj je een array wilt gebruiken? heb ke wel eens geprogrammeerd ?

in java heb je zeker ook nog nooit die dingen gebruikt, of vectors, hashdingesen..
Sigmoid: f(x) = 1 / (1 + 2.718281828458# ^ -x)
  woensdag 14 september 2005 @ 11:10:40 #26
2671 Aaargh!
Gebruik op eigen risico.
pi_30566542
quote:
Op woensdag 14 september 2005 10:46 schreef marq het volgende:
heb ke wel eens geprogrammeerd ?
Wel eens ja

Nog 4 keuzevakken afronden en ik mag mezelf software engineer noemen.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
  woensdag 14 september 2005 @ 11:19:29 #27
72762 marq
Mr. Psychonaut
pi_30566785
quote:
Op woensdag 14 september 2005 11:10 schreef Aaargh! het volgende:

[..]

Wel eens ja

Nog 4 keuzevakken afronden en ik mag mezelf software engineer noemen.
dan verwacht ik ook dat je weet hoe belangrijk arrays zijn. en dat ze in bepaalde gevallen enorm groot kunnen worden (nee, niet altijd behoefte aan het opslitsen van arrays)
Sigmoid: f(x) = 1 / (1 + 2.718281828458# ^ -x)
  woensdag 14 september 2005 @ 11:35:11 #28
2671 Aaargh!
Gebruik op eigen risico.
pi_30567200
quote:
Op woensdag 14 september 2005 11:19 schreef marq het volgende:

[..]

dan verwacht ik ook dat je weet hoe belangrijk arrays zijn. en dat ze in bepaalde gevallen enorm groot kunnen worden (nee, niet altijd behoefte aan het opslitsen van arrays)
Zoals eerder gezegd, het aantal situaties waarin een array de beste oplossing is , is vrij beperkt maar ze zijn er natuurlijk wel. Verder is het zo dat in de situaties waarin je ze gebruikt ze meestal ergens in een wrapper class zitten en je dus maar in een heel beperkt stuk code direct bij de array kan.

Over het algemeen ben je beter af met een nette data structuur.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
  woensdag 14 september 2005 @ 11:36:28 #29
72762 marq
Mr. Psychonaut
pi_30567233
fijn, dan begrijpen we elkaar toch nog
Sigmoid: f(x) = 1 / (1 + 2.718281828458# ^ -x)
pi_30579293
Ik maak juist best wel veel gebruik van array's

In bijv. mijn planetarium programma (zie mijn homepage) worden de bestanden bij het opstarten van het programma in een array's ingelezen. En dat gaat echt razend snel. Deze array's zijn door het hele programma aan te roepen. Of ik weer zou doen als ik het programma zou gaan herschrijven, denk ik niet. Inmiddels heb ik een aantal jaren meer ervaring. Maar het programma (+/- 9000 regels) is nog aardig goed leesbaar. Als ik na een tijd er weer mee aan de slag ga (af en toe komt er een nieuwe versie), dan zit ik weer vrij snel in de code.
Are you nuts??
  donderdag 15 september 2005 @ 09:05:46 #31
2671 Aaargh!
Gebruik op eigen risico.
pi_30594623
quote:
Op woensdag 14 september 2005 18:59 schreef whosvegas het volgende:
Deze array's zijn door het hele programma aan te roepen.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
pi_30602964
quote:
Op donderdag 15 september 2005 09:05 schreef Aaargh! het volgende:

[..]

Zoals ik al schreef, zou ik het nu waarschijnlijk anders gaan doen. Ik ben met het programma begonnen toen ik een paar jaar in VB programmeerde.
Are you nuts??
  donderdag 15 september 2005 @ 15:09:28 #33
2671 Aaargh!
Gebruik op eigen risico.
pi_30603449
quote:
Op donderdag 15 september 2005 14:50 schreef whosvegas het volgende:

[..]

Zoals ik al schreef, zou ik het nu waarschijnlijk anders gaan doen. Ik ben met het programma begonnen toen ik een paar jaar in VB programmeerde.
Misschien handig om een keer je app te herschrijven vanaf 0 ?
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
pi_30604390
quote:
Op donderdag 15 september 2005 15:09 schreef Aaargh! het volgende:

[..]

Misschien handig om een keer je app te herschrijven vanaf 0 ?
ben ik ooit wel van plan, maar je moet er wel de tijd voor hebben en dat heb ik niet op het moment. Voorlopig is het ook nog niet echt nodig, afgezien van wat public array's en variabelen ziet het er best netjes uit, ook zijn veel functies/variabelen voorzien van een stuk commentaar.
Wat me leuk lijkt, om er een shareware (nu is het freeware) programma van te maken. En dan echt met iets goeds komen. En dan is het natuurlijk een goed idee om helemaal opnieuw te beginnen. Waarschijnlijk zou ik dan ook een andere taal kiezen C++ of VB.NET. Maar ja, voorlopig komt het er niet van
Are you nuts??
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')