ここに、NTLMのハンドシェイクの仕方がわかりやすく書いてありました。これはHTTPでの話なのですが、POP3やIMAP4の場合も同じような感じなのでしょう。試しに実装してみたい気もしますが、テストするには多分Exchangeサーバがないとダメなんでしょうね。
UNICODE版をビルドしてみて少しはまったのでメモです。状況としてはTreeViewをスーパークラス化して使っていると、親ウィンドウへのWM_NOTIFYでの通知がANSIで行われてしまうというもの。Common Controlsを読む限り、ANSIかUNICODEのどちらで通知するかを特に指定しない場合には、IsWindowUnicodeを呼び出してTRUEならUNICODEで、それ以外ならANSIで通知するということになっています。
でもって、IsWindowUnicodeはどうやって判定しているかというと、ウィンドウクラスがRegisterClassAで登録されたかRegisterClassWで登録されたかで判定しているということです。UNICODE版でビルドした場合には、親ウィンドウはRegisterClassWで登録しているので自動的にUNICODEで通知されるようになって然るべきな気がしますが、なぜかANSIで通知されます。
仕方が無いので、WM_NOTIFYFORMATをハンドルしてUNICODE版の時にはNFR_UNICODEを(ANSIの時にはNFR_ANSIを)返すようにすると上手く行くようになりました。でも、そもそもの原因は不明なままです。