An easy way of discovering and selecting a single Bluetooth device from a GUI component, is that of reusing a Notifier.
Following, is an example of how to achieve this simply, using synchronous operations. In your application you should probably make use of this technique using active objects.
The example below initiates a discovery for devices that support the Serial Port Profile.
void GetDeviceAddressL()
{
RNotifier btNotifier;
User::LeaveIfError(btNotifier.Connect());
TBTDeviceSelectionParamsPckg selectionFilter;
TBTDeviceResponseParamsPckg selectionResponse;
selectionFilter().SetUUID(KSerialPortUUID);
TRequestStatus status;
btNotifier.StartNotifierAndGetResponse( status, KDeviceSelectionNotifierUid,
selectionFilter, selectionResponse);
User::WaitForRequest(status);
btNotifier.Close();
User::LeaveIfError(status.Int());
// use the response data ....
TBTDeviceName dname = selectionResponse().DeviceName();
TBTDeviceClass dclass = selectionResponse().DeviceClass();
// ... etc...
return;
}