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(-)