Hi,
A lot of thanks to Nikolay and Jacek for many comments and suggestions :)
While working on tests, I found some differences between atl80 and atl100:
--- snip --- + ok(wndproc[0] == wndproc[1], "expected same proc!\n"); --- snip ---
- On atl80, wndprocs are different for class AtlAxWin80 and class AtlAxWinLic80, however, wndprocs are the same for class AtlAxWin100 and class AtlAxWinLic100.
--- snip --- + hwnd = CreateWindowW(cls_names[i], NULL, 0, 100, 100, 100, 100, NULL, N ULL, NULL, NULL); + ok(hwnd != NULL, "CreateWindow failed!\n"); + control = (IUnknown *)0xdeadbeef; + res = AtlAxGetControl(hwnd, &control); + todo_wine ok(res == E_FAIL, "AtlAxGetControl failed with res %08x\n", res); --- snip ---
- On atl80, CreateWindow with NULL window name or empty name, then call AtlAxGetControl, result is S_OK. On atl100, the same test show that result is E_FAIL. control is NULL in both situation.
We've already shared source between different atl version, so it would be annoying to change the code to match different edge case on different version of atl. As far as now, I can't find any real world app depends on any of the above different edge result, so I guess we'd better follow what atl100 does even in atl80 code, would we?
Thanks for any comments.
--- dlls/atl100/tests/atl.c | 159 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 147 insertions(+), 12 deletions(-)