Toon posts:

[W32ASM] Label Caption op Form in Resource

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een resource file met daarin een form, waarop een label staat, waarvan de caption @ runtime aangepast moet worden door de programmacode.
Het programma is geschreven voor TASM 5!

Mij staat bij dat ik daarvoor de kernel functie PostMessage moet gebruiken, maar ik krijg het niet voor elkaar... Iemand suggesties?

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:50
Welkom op GoT/P&W. ;)


Wat krijg je niet voor elkaar,
wat lukt er precies niet,
krijg je een error? Zoja, welke?
Wat gebeurt er, wat gebeurt er niet....

Kristallen bollen worden al in geen eeuwen meer gemaakt, lees dus ff de P&W Quickstart: Welkom in P&W -> Quickstart (update 2/10/2002)
en pas je post ff aan met wat relevante informatie en evt een stukje relevante code.

[ Voor 29% gewijzigd door whoami op 02-01-2003 19:51 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
De code zet de form uit de resource die in de .exe is gecompileerd netjes op het scherm, maar past de caption van het label vervolgens niet aan. Ik weet niet precies de message die ik moet sturen naar het window waar de label op staat, dus daar zal het waarschijnlijk fout gaan...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

je moet die label een zinnig id geven (dus niet IDSTATIC die static labels default krijgen), en dan kun je met SetDlgItemText () de caption zetten

Je kunt ook de window handle van de label opvragen met GetDlgItem (), en dan de caption zetten met SetWindowText (), maar das misschien alleen handig als je nog andere dingen met dat label wilt doen en daarvoor dus zijn window handle moet hebben

.edit: deze functies maken intern gebruik van de WM_SETTEXT message, die je natuurlijk ook met de hand kunt sturen met SendMessage. PostMessage () wordt in dit geval afgeraden, aangezien de parameters van de message een pointer bevat

[ Voor 24% gewijzigd door .oisyn op 02-01-2003 19:56 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Laatst online: 14:50
[nohtml]
.oisyn schreef op 02 januari 2003 @ 19:54:
je moet die label een zinnig id geven (dus niet IDSTATIC die static labels default krijgen), en dan kun je met SetDlgItemText () de caption zetten

Je kunt ook de window handle van de label opvragen met GetDlgItem (), en dan de caption zetten met SetWindowText (), maar das misschien alleen handig als je nog andere dingen met dat label wilt doen en daarvoor dus zijn window handle moet hebben
Kun je dat in ASM?
Dat zijn VC++ functies....

https://fgheysels.github.io/


Verwijderd

Topicstarter
Klinkt goed:) Dat gaan we proberen! Bedankt:)

Ennuh.. Jah, je kan VC functies in ASM gebruiken; je haalt de entry point op, pusht de gegevens in de goede volgorde op de stack en doet een call naar de entry-point van de C functie... voila..

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

whoami schreef op 02 januari 2003 @ 19:57:

Kun je dat in ASM?
Dat zijn VC++ functies....


sinds wanneer kun je geen C-functies aanroepen vanuit assembly? :)

.edit: oh, let er trouwens op dat er bij de echte namen van SetDlgItemText (), SetWindowText () en SendMessage () eigenlijk nog een A of een W achter staan, waarbij de A variant voor ANSI strings is, en de W voor unicode strings. Als je voor win9x developt is het handig om de ANSI string versies te pakken, dus SetDlgItemTextA () enzo, aangezien de unicode versies niet standaard geimplementeerd zijn in win9x

[ Voor 51% gewijzigd door .oisyn op 02-01-2003 20:22 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Dat wist ik al, maar toch bedankt :) Weet een van jullie toevallig ook nog een goede resource editor? Ik heb nu de resource editor van Symantec, maar die werkt niet echt geweldig...

  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Verwijderd schreef op 02 januari 2003 @ 21:09:
Weet een van jullie toevallig ook nog een goede resource editor? Ik heb nu de resource editor van Symantec, maar die werkt niet echt geweldig...
Als je visual C hebt kan je die gebruiken, die is prima. Probeer anders eens RadAsm, is een IDE voor (m|t|f|n)asm die ook een resource editor heeft.

edit: Hier nog een IDE/text-editor met resource editor: asmedit.
edit2: resource builder, wel een 30 dagen trial

[ Voor 25% gewijzigd door madwizard op 02-01-2003 21:44 ]

www.madwizard.org


Verwijderd

Topicstarter
... Toch fijn dat er ook fora zijn waar mensen weten waar je het over hebt ;)


edit : typo

[ Voor 15% gewijzigd door Verwijderd op 02-01-2003 21:52 ]


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
IDD_DLG1                equ 1000 ; ID van Dialog
lblCurPath  equ 1004 ; ID van Label

Push Offset TraverseData.cFileName
Push lblCurPath
Push IDD_DLG1
Call SetDlgItemText

(of in MASM : invoke SetDlgItemText,IDD_DLG1,lblCurFile,addr TraverseData.cFileName)


Werkt beide niet?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

je moet niet het id van de dialog meegeven, maar de window handle

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Dus eerst GetDlgItem hDlg,IDD_DLG1 en daarna SetDlgItemText,hDlg,lblCurPath,addr TraverseData.cFilename ??

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

anders zoek je het even op in de msdn

Gewoon SetDlgItemText aanroepen, met als parameters:
- de HWND van de dialog (dus niet de resource id)
- de ID van de label
- de caption die de label moet krijgen

[ Voor 9% gewijzigd door .oisyn op 03-01-2003 17:09 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Ik heb hem al... Zat met het probleem dat de hWnd niet klopte, maar die zet ik nu in de DlgProc, dus dat was de oplossing!
Pagina: 1