}
}
-MSG_ENTRY erase_sequence[]={
+MSG_ENTRY paint_sequence[]={
{2, WM_PAINT, POST},
{1, WM_ERASEBKGND},
{1, WM_PRINTCLIENT},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
-MSG_ENTRY erase_nonthemed_sequence[]={
+MSG_ENTRY paint_nonthemed_sequence[]={
{2, WM_PAINT, POST},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {0,0}};
+
+MSG_ENTRY redraw_sequence[]={
+ {2, WM_PAINT, POST},
+ {2, WM_ERASEBKGND},
+ {1, WM_ERASEBKGND},
+ {1, WM_PRINTCLIENT},
+ {1, WM_CTLCOLORBTN},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {0,0}};
+
+MSG_ENTRY redraw_nonthemed_sequence[]={
+ {2, WM_PAINT, POST},
+ {2, WM_ERASEBKGND},
+ {1, WM_CTLCOLORBTN},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
MSG_ENTRY printclnt_nonthemed_sequence[]={
{2, WM_PRINTCLIENT},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
MSG_ENTRY printclnt_sequence[]={
{2, WM_PRINTCLIENT},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
MSG_ENTRY pseudomove_sequence[]={
{2, WM_MOUSEMOVE},
- {1, WM_NOTIFY, SENT, 0, -1249},
+ {1, WM_NOTIFY, SENT, 0, BCN_HOTITEMCHANGE},
{2, WM_MOUSELEAVE, POST},
- {1, WM_NOTIFY, SENT, 0, -1249},
+ {1, WM_NOTIFY, SENT, 0, BCN_HOTITEMCHANGE},
{2, WM_PAINT, POST},
{2, WM_ERASEBKGND},
{1, WM_ERASEBKGND},
{1, WM_PRINTCLIENT},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
MSG_ENTRY pseudomove_nonthemed_sequence[]={
{2, WM_MOUSEMOVE},
- {1, WM_NOTIFY, SENT, 0, -1249},
+ {1, WM_NOTIFY, SENT, 0, BCN_HOTITEMCHANGE},
{2, WM_MOUSELEAVE, POST},
- {1, WM_NOTIFY, SENT, 0, -1249},
+ {1, WM_NOTIFY, SENT, 0, BCN_HOTITEMCHANGE},
{2, WM_PAINT, POST},
{2, WM_ERASEBKGND},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
MSG_ENTRY pseudohover_sequence[]={
{2, WM_SETCURSOR},
{1, WM_SETCURSOR},
{2, WM_MOUSEMOVE, POST},
- {1, WM_NOTIFY, SENT, 0, -1249},
+ {1, WM_NOTIFY, SENT, 0, BCN_HOTITEMCHANGE},
{2, WM_PAINT, POST},
{2, WM_ERASEBKGND},
{1, WM_ERASEBKGND},
{1, WM_PRINTCLIENT},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
MSG_ENTRY mouseenter_nonthemed_sequence[]={
{2, WM_SETCURSOR},
{1, WM_SETCURSOR},
{2, WM_MOUSEMOVE, POST},
- {1, WM_NOTIFY, SENT, 0, -1249},
+ {1, WM_NOTIFY, SENT, 0, BCN_HOTITEMCHANGE},
{2, WM_PAINT, POST},
{2, WM_ERASEBKGND},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
MSG_ENTRY mousemove_sequence[]={
MSG_ENTRY mouseleave_sequence[]={
{2, WM_MOUSELEAVE, POST},
- {1, WM_NOTIFY, SENT, 0, -1249},
+ {1, WM_NOTIFY, SENT, 0, BCN_HOTITEMCHANGE},
{2, WM_PAINT, POST},
{2, WM_ERASEBKGND},
{1, WM_ERASEBKGND},
{1, WM_PRINTCLIENT},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
MSG_ENTRY mouseleave_nonthemed_sequence[]={
{2, WM_MOUSELEAVE, POST},
- {1, WM_NOTIFY, SENT, 0, -1249},
+ {1, WM_NOTIFY, SENT, 0, BCN_HOTITEMCHANGE},
{2, WM_PAINT, POST},
{2, WM_ERASEBKGND},
{1, WM_CTLCOLORBTN},
- {1, WM_NOTIFY, SENT, 0, -12},
- {1, WM_NOTIFY, SENT, 0, -12},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
+ {1, WM_NOTIFY, SENT, 0, NM_CUSTOMDRAW},
{0,0}};
void Test_MessagesNonThemed()
{
+ DWORD state;
+
MOVE_CURSOR(0,0);
+ EMPTY_CACHE();
RegisterSimpleClass(TestProc, L"testClass");
hWnd1 = CreateWindowW(L"testClass", L"Test parent", WS_POPUP | WS_VISIBLE, 100, 100, 200, 200, 0, NULL, NULL, NULL);
RedrawWindow(hWnd2, NULL, NULL, RDW_INTERNALPAINT);
FlushMessages();
- COMPARE_CACHE(erase_nonthemed_sequence);
+ COMPARE_CACHE(paint_nonthemed_sequence);
RedrawWindow(hWnd2, NULL, NULL, RDW_INVALIDATE);
FlushMessages();
- COMPARE_CACHE(erase_nonthemed_sequence);
+ COMPARE_CACHE(paint_nonthemed_sequence);
+
+ RedrawWindow(hWnd2, NULL, NULL, RDW_ERASE | RDW_INVALIDATE);
+ FlushMessages();
+ COMPARE_CACHE(redraw_nonthemed_sequence);
SendMessageW(hWnd2, WM_PRINTCLIENT, 0, PRF_ERASEBKGND);
FlushMessages();
FlushMessages();
COMPARE_CACHE(pseudoleave_sequence);
+ state = SendMessageW(hWnd2, BM_GETSTATE,0,0);
+ ok(state == 0, "Expected state 0, got %lu", state);
+ EMPTY_CACHE();
+
MOVE_CURSOR(150,150);
FlushMessages();
COMPARE_CACHE(mouseenter_nonthemed_sequence);
+ state = SendMessageW(hWnd2, BM_GETSTATE,0,0);
+ ok(state == BST_HOT, "Expected state BST_HOT, got %lu", state);
+ EMPTY_CACHE();
+
MOVE_CURSOR(151,151);
FlushMessages();
COMPARE_CACHE(mousemove_sequence);
+ state = SendMessageW(hWnd2, BM_GETSTATE,0,0);
+ ok(state == BST_HOT, "Expected state BST_HOT, got %lu", state);
+ EMPTY_CACHE();
+
MOVE_CURSOR(0,0);
FlushMessages();
COMPARE_CACHE(empty_chain);
FlushMessages();
COMPARE_CACHE(mouseleave_nonthemed_sequence);
+ state = SendMessageW(hWnd2, BM_GETSTATE,0,0);
+ ok(state == 0, "Expected state 0, got %lu", state);
+ EMPTY_CACHE();
+
DestroyWindow(hWnd1);
DestroyWindow(hWnd2);
}
void Test_MessagesThemed()
{
+ DWORD state;
+
MOVE_CURSOR(0,0);
+ EMPTY_CACHE();
RegisterSimpleClass(TestProc, L"testClass");
hWnd1 = CreateWindowW(L"testClass", L"Test parent", WS_POPUP | WS_VISIBLE, 100, 100, 200, 200, 0, NULL, NULL, NULL);
RedrawWindow(hWnd2, NULL, NULL, RDW_INTERNALPAINT);
FlushMessages();
- COMPARE_CACHE(erase_sequence);
+ COMPARE_CACHE(paint_sequence);
RedrawWindow(hWnd2, NULL, NULL, RDW_INVALIDATE);
FlushMessages();
- COMPARE_CACHE(erase_sequence);
+ COMPARE_CACHE(paint_sequence);
+
+ RedrawWindow(hWnd2, NULL, NULL, RDW_ERASE | RDW_INVALIDATE);
+ FlushMessages();
+ COMPARE_CACHE(redraw_sequence);
SendMessageW(hWnd2, WM_PRINTCLIENT, 0, PRF_ERASEBKGND);
FlushMessages();
COMPARE_CACHE(printclnt_sequence);
+ SendMessageW(hWnd2, WM_PRINTCLIENT, 0, PRF_CLIENT);
+ FlushMessages();
+ COMPARE_CACHE(printclnt_sequence);
+
SendMessageW(hWnd2, WM_MOUSEMOVE, 0, 0);
FlushMessages();
COMPARE_CACHE(pseudomove_sequence);
FlushMessages();
COMPARE_CACHE(pseudoleave_sequence);
+ state = SendMessageW(hWnd2, BM_GETSTATE,0,0);
+ ok(state == 0, "Expected state 0, got %lu", state);
+ EMPTY_CACHE();
+
MOVE_CURSOR(150,150);
FlushMessages();
COMPARE_CACHE(mouseenter_sequence);
+ state = SendMessageW(hWnd2, BM_GETSTATE,0,0);
+ ok(state == BST_HOT, "Expected state BST_HOT, got %lu", state);
+ EMPTY_CACHE();
+
MOVE_CURSOR(151,151);
FlushMessages();
COMPARE_CACHE(mousemove_sequence);
+ state = SendMessageW(hWnd2, BM_GETSTATE,0,0);
+ ok(state == BST_HOT, "Expected state BST_HOT, got %lu", state);
+ EMPTY_CACHE();
+
MOVE_CURSOR(0,0);
FlushMessages();
COMPARE_CACHE(empty_chain);
FlushMessages();
COMPARE_CACHE(mouseleave_sequence);
+ state = SendMessageW(hWnd2, BM_GETSTATE,0,0);
+ ok(state == 0, "Expected state 0, got %lu", state);
+ EMPTY_CACHE();
+
DestroyWindow(hWnd1);
DestroyWindow(hWnd2);
}