They say, DeleteIPAddress deletes address previously added by AddIPAddress :-)
I had do some research by the interest and...
There are undocumented SetAdapterIPAddress
function.
DWORD SetAdapterIpAddress( char *pszAdapGUID,
DWORD dwDHCP,
DWORD dwIP,
DWORD dwMask,
DWORD dwGateway );
It may work or not :-)
Also there are WMI interface. See for Win32_NetworkAdapterConfiguration
class.
And there are a records in the windows registry for NIC IP address...
I think, the complexity are presence in Windows many "internal" configuration agents (DHCP, others..) and they all are the internal part of the OS and then as they manipulate an ip address, the other manipulations out of the control may break working of them. Also there are possibility to assign a static ip address in the Registry and it also should not be broken. And then you really have DeleteIPAddress which you previously add... I think, it is intended for your own dynamic config agents...
If you are not satisfied by work of other agents you should turn them off (instead of manipulating ip address out of the control)... Or control them by some specific API... Or set static IP...