Aha, so your actual problem is how to link a View to a Character, so that you can go from a handle on the Character to the associated View.
Well, the easiest way is to use one of the built-in properties. AGS Characters come with various default views you can set (Normal, Talk, Idle, Think…), and if you're not using one of these you can repurpose it for this purpose. Just set the view property to the view where you have the thought-bubble animation. Then, going off your first post, you'd do something like:
int thinkTimer;
void ThinkAbout(this Character*, Character* targetCharacter, int thinkTime)
{
guiThoughtBubble.SetPosition(this.x+20, this.y-30);
guiThoughtBubble.Visible=true;
btnThoughBubble.Animate(targetCharacter.ThinkView, 0, 5, eRepeat);
thinkTimer = thinkTime*GetGameSpeed();
}
Which you could then call as:
player.ThinkAbout(cDracula, 10); // Thinks about Dracula for 10 seconds
If you don't have a spare view property to repurpose, you can use a custom property instead. Instead of
targetCharacter.ThinkView you would then use something like
targetCharacter.GetProperty("ThoughtBubbleView").
(Note that in the example I've removed the references to Dracula in the GUI name, since you definitely don't want it tied to the particular Character being displayed.)