You need to add something called 'Actions'. It adds entries to the 'Action' menu for the module.
The Steps:
1) Have your module inherit IActionable [in DotNetNuke.Entities.Modules]
2) In your class, add the following [formatting to reduce space]
public ModuleActionCollection ModuleActions{get{
ModuleActionCollection actions = new ModuleActionCollection();
}}
3) To add an "Edit" action, place the following line after the 'actions' declaration
actions.Add(GetNextActionID(), "Edit", ModuleActionType.AddContent, "", "", EditUrl(), false, DotNetNuke.Security.SecurityAccessLevel.Edit, true, false);
4) To add other, custom, options in the action menu, it will look something like this
actions.Add(GetNextActionID(), "TEXT IN MENU", ModuleActionType.AddContent, "", "", Globals.NavigateURL("CONTROL_KEY", new[] { "mid/" + ModuleId }), false, DotNetNuke.Security.SecurityAccessLevel.Edit, true, false);
The "TEXT IN MENU" is what will appear in the module menu.
The "CONTROL_KEY" is determined in the dnn manifest when the module is installed, or assigned through the module definition interface.
4.1) Add return actions; to the end of the 'get'
5) To include the new ascx and it's functionality to the module's installation, add a new 'moduleControl' section to the dnn manifest with the CONTROL_KEY entry filled out.
All of this assumes you've created a new ascx in your project. For my additional controls, I keep them in the same namespace, but their own class. Mine are set up almost identical to my standard module view ascx file. I can't think of anything off the top of my head, nor looking at one of my additional functionality ascx files. The template I use actually generates both from the same file with only a few minor flags for some custom stuff I do.
I hope that helps.