93 static HMENU hmenupopup;
110 trace(
"WM_MEASUREITEM received data %Ix size %dx%d\n",
124 char chrs[]=
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
131 trace(
"WM_DRAWITEM received hwnd %p hmenu %p itemdata %Id item %d rc %s itemrc: %s\n",
176 "Menu window handle is NULL!\n");
179 ok( hmenupopup ==
hmenu,
"MN_GETHMENU returns %p expected %p\n",
232 ok(
ret ==
FALSE,
"GetMenuBarInfo should not have been successful\n");
233 ok(
err == 0xdeadbeef,
"err = %d\n",
err);
245 ok(!
ret,
"GetMenuBarInfo succeeded\n");
251 ok(!
ret,
"GetMenuBarInfo succeeded\n");
257 ok(
ret ==
FALSE,
"GetMenuBarInfo should have failed\n");
258 ok(
err == 0xdeadbeef,
"err = %d\n",
err);
264 ok(
ret ==
FALSE,
"GetMenuBarInfo should have failed\n");
271 ok(
ret ==
FALSE,
"GetMenuBarInfo should have failed\n");
272 ok(
err == 0xdeadbeef,
"err = %d\n",
err);
286 ok(
ret,
"AppendMenu failed.\n");
288 ok(
ret,
"AppendMenu failed.\n");
295 ok(
ret ==
FALSE,
"GetMenuBarInfo should have failed\n");
296 ok(
err == 0xdeadbeef,
"err = %d\n",
err);
304 ok(
ret,
"GetWindowRect failed.\n");
306 ok(
ret,
"GetMenuItemRect failed.\n");
319 ok(
ret,
"GetMenuItemRect failed.\n");
336 POINT client_top_left;
359 client_top_left.
x = 0;
360 client_top_left.
y = 0;
364 ok(item_rect.
left == client_top_left.
x,
"Expect item_rect.left %ld == %ld\n", item_rect.
left, client_top_left.
x);
365 ok(item_rect.
right <= window_rect.
right,
"Expect item_rect.right %ld <= %ld\n", item_rect.
right, window_rect.
right);
368 ok(item_rect.
top - (window_rect.
top + caption_height) <= 1,
"Expect item_rect.top %ld - %ld <= 1\n", item_rect.
top,
369 window_rect.
top + caption_height);
370 ok(item_rect.
bottom - (client_top_left.
y - 1) <= 1,
"Expect item_rect.bottom %ld - %ld <= 1\n", item_rect.
bottom,
371 client_top_left.
y - 1);
376 ok(item_rect.
left == client_top_left.
x,
"Expect item_rect.left %ld == %ld\n", item_rect.
left, client_top_left.
x);
377 ok(item_rect.
right == client_top_left.
x,
"Expect item_rect.right %ld == %ld\n", item_rect.
right, client_top_left.
x);
378 ok(item_rect.
top == client_top_left.
y,
"Expect item_rect.top %ld == %ld\n", item_rect.
top, client_top_left.
y);
379 ok(item_rect.
bottom == client_top_left.
y,
"Expect item_rect.bottom %ld == %ld\n", item_rect.
bottom,
404 for (
i = 0xf000;
i < 0xf200;
i++)
421 ok(
ret,
"%x menu item not found\n",
i );
426 ok( !
ret,
"%x menu item found\n",
i );
429 found[
i - 0xf000] =
ret;
432 for (
i = 0xf000;
i < 0xf200;
i++)
435 if (
res == -1)
ok( !found[
i - 0xf000],
"could not check existent item %x\n",
i );
436 else ok( found[
i - 0xf000],
"could check non-existent item %x\n",
i );
439 if (
res == -1)
ok( !found[
i - 0xf000],
"could not enable existent item %x\n",
i );
440 else ok( found[
i - 0xf000],
"could enable non-existent item %x\n",
i );
443 if (
res == -1)
ok( !found[
i - 0xf000],
"could not get state existent item %x\n",
i );
444 else ok( found[
i - 0xf000],
"could get state of non-existent item %x\n",
i );
446 if (!found[
i - 0xf000])
449 ok( !
ret,
"could remove non-existent item %x\n",
i );
454 else if (!
ret)
ok( !found[
i - 0xf000],
"could not modify existent item %x\n",
i );
455 else ok( found[
i - 0xf000],
"could modify non-existent item %x\n",
i );
459 else if (!
ret)
ok( !found[
i - 0xf000],
"could not modify existent item %x\n",
i );
460 else ok( found[
i - 0xf000],
"could modify non-existent item %x\n",
i );
463 ok( !
ret,
"could modify non-existent item %x\n",
i );
474 else if (!
ret)
ok( !found[
i - 0xf000],
"could not set existent item %x\n",
i );
475 else ok( found[
i - 0xf000],
"could set non-existent item %x\n",
i );
477 ok( !
ret,
"could modify non-existent item %x\n",
i );
487 else if (!
ret)
ok( !found[
i - 0xf000],
"could not set existent item %x\n",
i );
488 else ok( found[
i - 0xf000],
"could set non-existent item %x\n",
i );
490 ok( !
ret,
"could modify non-existent item %x\n",
i );
494 for (
i = 0xf000;
i < 0xf200;
i++)
510 ok(
ret,
"%x menu item not found\n",
i );
515 ok( !
ret,
"%x menu item found\n",
i );
526 ok(
res == -1,
"CheckMenuItem succeeded\n" );
528 ok(
res == -1,
"EnableMenuItem succeeded\n" );
530 ok(
res == -1,
"GetMenuState succeeded\n" );
532 ok( !
ret,
"RemoveMenu succeeded\n" );
538 ok( !
ret,
"ModifyMenu succeeded on SC_TASKLIST-1\n" );
547 ok(
ret,
"failed to set SC_TASKLIST\n" );
549 ok( !
ret,
"succeeded setting SC_TASKLIST+1\n" );
551 ok( !
ret,
"succeeded setting by position\n" );
560 ok(
ret,
"failed to set SC_TASKLIST\n" );
562 ok( !
ret,
"succeeded setting SC_TASKLIST+1\n" );
564 ok( !
ret,
"succeeded setting by position\n" );
592 ok(!
ret ||
broken(
ret) ,
"Menu handle should have been destroyed\n");
598 ok(
ret,
"WM_INITMENU should have been sent\n");
629 const int itemid = 0x1234567;
651 mi.fMask |= MIM_STYLE;
655 ok(
ret ,
"Menu handle is not valid\n");
669 mi.fMask |= MIM_STYLE;
671 ok( !
ret ,
"GetMenuInfo should have failed\n");
674 ok( !
ret ,
"Menu handle should be invalid\n");
709 ok(
ret,
"AppendMenu failed for %d\n",
k-1);
718 "item rectangles are not separated by 4 pixels space\n");
721 "menu item has wrong height: %ld should be %d\n",
725 "There should not be a space between the rows, gap is %ld\n",
731 "Wrong height field in MEASUREITEMSTRUCT, expected %d or %d actual %d\n",
741 "columns should be 4 pixels to the left (actual %ld).\n",
745 "width of owner drawn menu item is wrong. Got %ld expected %d\n",
749 "Height is incorrect. Got %ld expected %d\n",
759 ok( mii.
wID == 1,
"wrong id %x\n", mii.
wID );
773 ok(
ret,
"AppendMenu failed for %d\n",
i);
780 "width of owner drawn menu item is wrong. Got %ld expected %d\n",
784 "Height of owner drawn menu item is wrong. Got %ld expected %d\n",
821 hastab = *(
p + 1) ? 2 : 1;
825 if(hastab && !ispop)
return;
831 ok( submenu != 0,
"CreateMenu failed with error %ld\n",
GetLastError());
843 mi.fMask = MIM_STYLE;
854 RECT rc = {100, 50, 400, 70};
892 "menu width wrong, got %ld expected %d\n", rc.
right - rc.
left,
expect);
907 "menu height wrong, got %ld expected %d (%d)\n",
915 else if (mnuopt == 0)
917 else if (mnuopt == 1)
933 trace(
"*** count %d %s text \"%s\" bitmap %p bmsize %ld,%ld textsize %ld+%ld,%ld mnuopt %d hastab %d\n",
936 trace(
" check %d,%d arrow %d avechar %d\n",
960 int count, szidx, txtidx, bmpidx, hassub, mnuopt, ispop;
963 memset( bmfill, 0xcc,
sizeof( bmfill));
975 mi.fMask = MIM_STYLE;
979 ok(
MNS_CHECKORBMP ==
mi.dwStyle,
"System Menu Style is %08lx, without the bit %08x\n",
985 ok(
HBMMENU_POPUP_CLOSE == mii.hbmpItem,
"Item info did not get the right hbitmap: got %p expected %p\n",
988 memset(&mii, 0x81,
sizeof(mii));
992 mii.
cch =
sizeof(bmfill);
995 ok(got,
"GetMenuItemInfo failed\n");
1002 ok(mii.
cch != 0,
"cch should not be 0\n");
1005 mii.
cbSize =
sizeof(mii);
1007 mii.hbmpItem = (
HBITMAP)0x81818181;
1009 ok(got,
"GetMenuItemInfo failed\n");
1016 ok(mii.
cch != 0,
"cch should not be 0\n");
1022 trace(
" check %d,%d arrow %d avechar %d\n",
1027 for( ispop=1; ispop >= 0; ispop--){
1028 static SIZE bmsizes[]= {
1029 {10,10},{38,38},{1,30},{55,5}};
1030 for( szidx=0; szidx <
ARRAY_SIZE(bmsizes); szidx++) {
1035 for( hassub = 0; hassub < 2 ; hassub++) {
1036 for( mnuopt = 0; mnuopt < 3 ; mnuopt++){
1037 for( bmpidx = 0; bmpidx <
ARRAY_SIZE(bitmaps); bmpidx++) {
1039 if( !bitmaps[bmpidx] && szidx > 0)
continue;
1044 if( !ispop && hassub)
continue;
1074 WCHAR strbackW[0x80];
1075 static CHAR blah[] =
"blah";
1076 static const WCHAR expectedString[] = {
'D',
'u',
'm',
'm',
'y',
' ',
's',
't',
'r',
'i',
'n',
'g', 0};
1083 info.dwTypeData = blah;
1085 info.dwItemData = 0;
1098 ok( !
strcmp(
string,
"blah" ),
"menu item name differed\n");
1101 strcpy(
string,
"Dummy string");
1108 ok (rc,
"InsertMenuItem failed\n");
1110 strcpy(
string,
"Garbage");
1112 ok (!
strcmp( strback,
"Dummy string" ),
"Menu text from Ansi version incorrect\n");
1115 ok (
ret,
"GetMenuStringW on ownerdraw entry failed\n");
1116 ok (!
lstrcmpW( strbackW, expectedString ),
"Menu text from Unicode version incorrect\n");
1122 ok (!rc,
"SetMenuItemInfoA succeeded unexpectedly\n");
1128 ok (!rc,
"SetMenuItemInfoA succeeded unexpectedly\n");
1136 info.dwTypeData= (
char *)0xdeadbeef;
1138 ok (rc,
"SetMenuItemInfo failed\n");
1142 ok (!
strcmp( strback,
"Dummy string" ),
"Menu text from Ansi version incorrect\n");
1149 info.dwTypeData= (
char *)0xdeadbee2;
1151 ok (!rc,
"SetMenuItemInfo unexpectedly worked\n");
1155 info.dwTypeData= (
char *)0xdeadbee3;
1157 ok (rc,
"SetMenuItemInfo failed\n");
1161 ok (!
strcmp( strback,
"Dummy string" ),
"Menu text from Ansi version incorrect\n");
1170 ok (rc,
"SetMenuItemInfo failed\n");
1173 ok (!
strcmp( strback,
"string2" ),
"Menu text from Ansi version incorrect\n");
1181 ok (rc,
"InsertMenuItem failed\n");
1183 "GetMenuString on ownerdraw entry succeeded.\n");
1185 ok (!
ret,
"GetMenuStringW on ownerdraw entry succeeded.\n");
1206 info.hSubMenu = submenu;
1207 info.hbmpChecked = checked;
1208 info.hbmpUnchecked = unchecked;
1210 info.dwTypeData = type_data;
1216 if (!
expect)
ok_(__FILE__,
line)( !
ret,
"InsertMenuItem should have failed.\n" );
1233 info.dwTypeData = type_data;
1240 ok_(__FILE__,
line)( !
ret,
"GetMenuItemInfo should have failed.\n" );
1246 "wrong type %x/%x\n",
info.fType,
type );
1249 "wrong state %x/%x\n",
info.fState,
state );
1252 "wrong id %x/%x\n",
info.wID,
id );
1255 "wrong submenu %p/%p\n",
info.hSubMenu, submenu );
1259 "wrong bmpchecked %p/%p\n",
info.hbmpChecked, checked );
1261 "wrong bmpunchecked %p/%p\n",
info.hbmpUnchecked, unchecked );
1265 "wrong item data %Ix/%Ix\n",
info.dwItemData,
data );
1268 "wrong bmpitem %p/%p\n",
info.hbmpItem,
item );
1270 "wrong type data %p/%p\n",
info.dwTypeData, type_data );
1273 "wrong len %x/%x\n",
info.cch, out_len );
1278 "menu item name differed from '%s' '%s'\n", expname,
info.dwTypeData );
1281 "menu item name wrong\n" );
1289 ok_(__FILE__,
line)( !
ret,
"GetMenuString should have failed\n" );
1320 info.hSubMenu = submenu;
1321 info.hbmpChecked = checked;
1322 info.hbmpUnchecked = unchecked;
1324 info.dwTypeData = type_data;
1333#define TMII_INSMI( c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,eret1 )\
1334 hmenu = CreateMenu();\
1335 submenu = CreateMenu();\
1336 if(ansi)strcpy( string, init );\
1337 else wcscpy( string, init );\
1338 insert_menu_item( __LINE__, hmenu, ansi, c1, d1, e1, f1, g1, h1, i1, j1, k1, l1, m1, eret1 )
1341#define TMII_GMII( c2,l2,\
1342 d3,e3,f3,g3,h3,i3,j3,k3,l3,m3,\
1343 expname, eret2, eret3)\
1344 check_menu_item_info( __LINE__, hmenu, ansi, c2, d3, e3, f3, g3, h3, i3, j3, k3, l2, l3, m3, \
1345 expname, eret2, eret3 )
1348 RemoveMenu(hmenu, 0, TRUE );\
1349 DestroyMenu( hmenu );\
1350 DestroyMenu( submenu );
1353#define TMII_MODM( flags, id, data ) \
1354 modify_menu( __LINE__, hmenu, ansi, flags, id, data )
1357#define TMII_SMII( c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1 ) \
1358 set_menu_item_info( __LINE__, hmenu, ansi, c1, d1, e1, f1, g1, h1, i1, j1, k1, l1, m1 )
1371 WCHAR txtW[]={
'W',
'i',
'n',
'e',0};
1372 WCHAR initW[]={
'X',
'Y',
'Z',0};
1383 trace(
"%s string %p hbm %p txt %p\n",
ansi ?
"ANSI tests: " :
"Unicode tests:",
string,
hbm, txt);
1386 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, 0, 0, 0, 0, 0, 0, txt, 0, 0,
OK );
1388 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 4, 0,
1391 TMII_INSMI(
MIIM_TYPE,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 0, 0,
OK );
1393 MFT_STRING|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1396 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP, -1, -1, 0, 0, 0, -1,
hbm, 6, 0,
OK );
1398 MFT_BITMAP, 0, 0, 0, 0, 0, 0,
hbm, 0,
hbm,
1401 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1,
hbm, 6, 0,
OK );
1403 MFT_BITMAP|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
hbm, 0,
hbm,
1407 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1409 MFT_STRING, 0, 0, 0, 0, 0, 0,
NULL, 4, 0,
1412 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1414 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 4, 0,
1417 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1419 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 3, 0,
1422 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING,
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1,
NULL, 0, 0,
OK );
1424 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
NULL, 0, 0,
1428 TMII_INSMI(
MIIM_TYPE|
MIIM_STRING,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
ER );
1430 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1435 TMII_INSMI(
MIIM_TYPE|
MIIM_FTYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
ER );
1437 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1442 TMII_INSMI(
MIIM_TYPE|
MIIM_BITMAP,
MFT_BITMAP, -1, -1, 0, 0, 0, -1,
hbm, 6,
hbm,
ER );
1445 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1447 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 4, 0,
1450 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1452 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 4, 0,
1455 TMII_INSMI(
MIIM_TYPE|
MIIM_ID,
MFT_STRING, -1, 888, 0, 0, 0, -1, txt, 6, 0,
OK );
1457 MFT_STRING, 0, 888, 0, 0, 0, 0,
string, 4, 0,
1460 TMII_INSMI(
MIIM_TYPE|
MIIM_DATA,
MFT_STRING, -1, -1, 0, 0, 0, 999, txt, 6, 0,
OK );
1462 MFT_STRING, 0, 0, 0, 0, 0, 999,
string, 4, 0,
1467 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1469 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 4, 0,
1473 TMII_INSMI(
MIIM_TYPE,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1475 MFT_STRING|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
string, 0, 0,
1478 TMII_INSMI(
MIIM_TYPE,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1,
NULL, 0, 0,
OK );
1480 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
string, 0, 0,
1483 TMII_INSMI(
MIIM_TYPE,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1,
NULL, 0, 0,
OK );
1485 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
string, 80, 0,
1488 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 0, 0,
OK );
1490 0, 0, 0, 0, 0, 0, 0,
string, 80, 0,
1494 TMII_INSMI(
MIIM_STRING|
MIIM_FTYPE,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 0, 0,
OK );
1496 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
string, 4, 0,
1500 TMII_INSMI(
MIIM_STRING|
MIIM_FTYPE,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 0, 0,
OK );
1502 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
NULL, 4,
NULL,
1505 TMII_INSMI(
MIIM_STRING|
MIIM_FTYPE,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1,
NULL, 0, 0,
OK );
1507 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
string, 0, 0,
1510 TMII_INSMI(
MIIM_STRING|
MIIM_FTYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1,
NULL, 0, 0,
OK );
1512 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
string, 0, 0,
1515 TMII_INSMI(
MIIM_STRING|
MIIM_FTYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1,
NULL, 0, 0,
OK );
1517 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
NULL, 0, 0,
1522 TMII_INSMI(
MIIM_BITMAP, -1, -1, -1, 0, 0, 0, -1, 0, -1,
hbm,
OK );
1524 MFT_BITMAP, 0, 0, 0, 0, 0, 0,
hbm, 0,
hbm,
1527 TMII_INSMI(
MIIM_BITMAP, -1, -1, -1, 0, 0, 0, -1, 0, -1,
hbm,
OK );
1529 0, 0, 0, 0, 0, 0, 0,
string, 80,
hbm,
1533 TMII_INSMI(
MIIM_BITMAP|
MIIM_FTYPE,
MFT_BITMAP, -1, -1, 0, 0, 0, -1, 0, -1,
hbm,
ER );
1536 TMII_INSMI(
MIIM_BITMAP|
MIIM_FTYPE,
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, 0, -1,
hbm,
OK );
1538 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
string, 80,
hbm,
1542 TMII_INSMI(
MIIM_FTYPE,
MFT_BITMAP, -1, -1, 0, 0, 0, -1, 0, -1, 0,
ER );
1546 TMII_INSMI(
MIIM_SUBMENU|
MIIM_FTYPE,
MFT_STRING, -1, -1, submenu, 0, 0, -1, txt, 0, 0,
OK );
1548 0, 0, 0, submenu, 0, 0, 0,
string, 80, 0,
1551 TMII_INSMI(
MIIM_SUBMENU|
MIIM_FTYPE,
MFT_STRING, -1, -1, submenu, 0, 0, -1,
empty, 0, 0,
OK );
1553 0, 0, 0, submenu, 0, 0, 0,
string, 80, 0,
1557 TMII_INSMI(
MIIM_SUBMENU|
MIIM_FTYPE,
MFT_STRING, -1, -1, submenu, 0, 0, -1, txt, 0, 0,
OK );
1559 MFT_STRING|
MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
string, 0, 0,
1562 MFT_SEPARATOR, 0, 0, submenu, 0, 0, 0,
string, 80, 0,
1566 TMII_INSMI(
MIIM_SUBMENU|
MIIM_FTYPE,
MFT_STRING, -1, -1, (
HMENU)999, 0, 0, -1, txt, 0, 0,
ER );
1569 TMII_INSMI(
MIIM_TYPE,
MFT_SEPARATOR, 0, 0, 0, 0, 0, 0, txt, 0, 0,
OK );
1571 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1574 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP|
MFT_SEPARATOR, -1, -1, 0, 0, 0, -1,
hbm, 6, 0,
OK );
1576 MFT_BITMAP|
MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
hbm, 0,
hbm,
1581 TMII_INSMI(
MIIM_STRING|
MIIM_BITMAP, -1, -1, -1, 0, 0, 0, -1, txt, 6,
hbm,
OK );
1583 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 4,
hbm,
1587 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING|
MIIM_BITMAP,
MFT_SEPARATOR, -1, -1, 0, 0, 0, -1, txt, 6,
hbm,
OK );
1589 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
string, 4,
hbm,
1593 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING,
MFT_SEPARATOR, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1595 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
NULL, 4,
NULL,
1598 TMII_INSMI(
MIIM_STRING|
MIIM_BITMAP, -1, -1, -1, 0, 0, 0, -1, txt, 6,
hbm,
OK );
1600 MFT_BITMAP, 0, 0, 0, 0, 0, 0,
hbm, 4,
hbm,
1603 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING|
MIIM_BITMAP,
MFT_SEPARATOR, -1, -1, 0, 0, 0, -1, txt, 6,
hbm,
OK );
1605 MFT_SEPARATOR|
MFT_BITMAP, 0, 0, 0, 0, 0, 0,
hbm, 4,
hbm,
1609 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING,
MFT_SEPARATOR|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 6, 0,
OK );
1611 MFT_SEPARATOR|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
NULL, 4,
NULL,
1614 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING|
MIIM_BITMAP,
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 6,
hbm,
OK );
1616 MFT_BITMAP|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
hbm, 4,
hbm,
1619 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING|
MIIM_BITMAP,
MFT_SEPARATOR|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 6,
hbm,
OK );
1621 MFT_SEPARATOR|
MFT_BITMAP|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
hbm, 4,
hbm,
1625 TMII_INSMI(
MIIM_STRING|
MIIM_FTYPE|
MIIM_ID,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 0, 0,
OK );
1627 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
NULL, 4,
NULL,
1631 TMII_INSMI(
MIIM_STRING,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 0, 0,
OK );
1634 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 787,
string, 4, 0,
1638 TMII_INSMI(
MIIM_STRING,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 0, 0,
OK );
1641 MFT_BITMAP, 0, 545, 0, 0, 0, 0,
string, 0,
hbm,
1645 TMII_INSMI(
MIIM_BITMAP,
MFT_STRING, -1, -1, 0, 0, 0, -1, 0, -1,
hbm,
OK );
1647 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 0,
hbm,
1651 MFT_STRING, 0, 545, 0, 0, 0, 0,
string, 4, 0,
1655 TMII_INSMI(
MIIM_BITMAP,
MFT_STRING, -1, -1, 0, 0, 0, -1, 0, -1,
hbm,
OK );
1658 MFT_SEPARATOR, 0, 545, 0, 0, 0, 0,
string, 0, 0,
1662 TMII_INSMI(
MIIM_BITMAP, -1 , -1, -1, 0, 0, 0, -1, 0, -1,
hbm,
OK );
1665 MFT_STRING, 0, 545, 0, 0, 0, 0,
string, 0, 0,
1669 TMII_INSMI(
MIIM_BITMAP, -1, -1, -1, 0, 0, 0, -1, 0, -1,
hbm,
OK );
1672 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 232,
string, 0,
hbm,
1676 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING|
MIIM_BITMAP,
MFT_SEPARATOR, -1, -1, 0, 0, 0, -1, txt, 6,
hbm,
OK );
1678 0, 0, 0, 0, 0, 0, 0,
string, 80, 0,
1682 TMII_INSMI(
MIIM_BITMAP, -1, -1, -1, 0, 0, 0, -1, 0, -1, dummy_hbm,
OK );
1684 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
NULL, 0,
NULL,
1687 TMII_INSMI(
MIIM_BITMAP, -1, -1, -1, 0, 0, 0, -1, 0, -1, dummy_hbm,
OK );
1689 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
string, 80,
NULL,
1692 TMII_INSMI(
MIIM_STRING|
MIIM_BITMAP, -1, -1, -1, 0, 0, 0, -1, txt, 6, dummy_hbm,
OK );
1694 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 4,
NULL,
1697 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING|
MIIM_BITMAP,
MFT_SEPARATOR, -1, -1, 0, 0, 0, -1, txt, 6, dummy_hbm,
OK );
1699 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
NULL, 4,
NULL,
1702 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING|
MIIM_BITMAP,
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 6, dummy_hbm,
OK );
1704 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
NULL, 4,
NULL,
1707 TMII_INSMI(
MIIM_FTYPE|
MIIM_STRING|
MIIM_BITMAP,
MFT_SEPARATOR|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, -1, txt, 6, dummy_hbm,
OK );
1709 MFT_SEPARATOR|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
NULL, 4,
NULL,
1713 TMII_INSMI(
MIIM_TYPE|
MIIM_DATA,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, 343, txt, 0, 0,
OK );
1715 MFT_STRING|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 343, 0, 0, 0,
1718 TMII_INSMI(
MIIM_TYPE|
MIIM_DATA,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, 343, txt, 0, 0,
OK );
1720 MFT_STRING|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1723 TMII_INSMI(
MIIM_TYPE,
MFT_STRING|
MFT_OWNERDRAW, -1, -1, 0, 0, 0, 343, txt, 0, 0,
OK );
1725 MFT_STRING|
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1729 TMII_INSMI(
MIIM_TYPE,
MFT_STRING, -2, -2, 0, 0, 0, -2, txt, -2, 0,
OK );
1730 TMII_SMII (
MIIM_TYPE,
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
1732 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
string, 4, 0,
1736 TMII_INSMI(
MIIM_STRING,
MFT_STRING, -1, -1, 0, 0, 0, -1, txt, 0, 0,
OK );
1739 MFT_STRING, 0, 0, submenu, 0, 0, 0,
string, 4, 0,
1742 MFT_STRING, 0, 0, 0, 0, 0, 0,
string, 4, 0,
1746 TMII_INSMI(
MIIM_STRING|
MIIM_FTYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1,
NULL, 0, 0,
OK );
1747 TMII_SMII(
MIIM_STRING, 0, 0, 0, 0, 0, 0, 0, txt, 0, 0 );
1749 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
string, 4, 0,
1753 TMII_INSMI(
MIIM_STRING|
MIIM_FTYPE,
MFT_STRING, -1, -1, 0, 0, 0, -1,
NULL, 0, 0,
OK );
1754 TMII_SMII(
MIIM_BITMAP, 0, 0, 0, 0, 0, 0, 0, 0, 0,
hbm );
1756 MFT_SEPARATOR, 0, 0, 0, 0, 0, 0,
string, 80,
hbm,
1765 MFT_BITMAP |
MFT_RIGHTJUSTIFY, 0, 0, 0, 0, 0, 0,
HBMMENU_MBAR_CLOSE, 0,
HBMMENU_MBAR_CLOSE,
1769 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP |
MFT_MENUBARBREAK |
MFT_RADIOCHECK |
MFT_RIGHTJUSTIFY |
MFT_RIGHTORDER, -1, -1, 0, 0, 0, -1,
hbm, -1, 0,
OK );
1771 MFT_BITMAP |
MFT_MENUBARBREAK |
MFT_RADIOCHECK |
MFT_RIGHTJUSTIFY |
MFT_RIGHTORDER, 0, 0, 0, 0, 0, 0,
hbm, 0,
hbm,
1775 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP, -1, -1, 0, 0, 0, -1,
hbm, -1, 0,
OK );
1776 TMII_SMII(
MIIM_STATE, -1,
MFS_CHECKED |
MFS_DEFAULT |
MFS_GRAYED |
MFS_HILITE, 0, 0, 0, 0, 0, 0, 0, 0 );
1778 0,
MFS_CHECKED |
MFS_DEFAULT |
MFS_GRAYED |
MFS_HILITE, 0, 0, 0, 0, 0, 0, 80, 0,
1782 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP, -1, -1, 0, 0, 0, -1,
hbm, -1, 0,
OK );
1783 TMII_SMII(
MIIM_CHECKMARKS,
MFT_RADIOCHECK, 0, 0, 0,
hbm,
hbm, 0, 0, 0, 0 );
1785 MFT_BITMAP, 0, 0, 0,
hbm,
hbm, 0,
hbm, 0,
hbm,
1789 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP, -1, -1, 0, 0, 0, -1,
hbm, -1, 0,
OK );
1790 TMII_SMII(
MIIM_FTYPE,
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, (
HBITMAP)0x1234, 0, 0 );
1792 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, 0, 80, 0,
1795 MFT_BITMAP |
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
hbm, 0,
hbm,
1798 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, 0, 80, 0,
1800 TMII_SMII(
MIIM_BITMAP, 0, 0, 0, 0, 0, 0, 0, 0, 0,
NULL );
1802 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
NULL, 0,
NULL,
1811 MFT_BITMAP |
MFT_RIGHTJUSTIFY, 0, 0, 0, 0, 0, 0,
HBMMENU_MBAR_CLOSE, 0,
HBMMENU_MBAR_CLOSE,
1815 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP |
MFT_MENUBARBREAK |
MFT_RADIOCHECK |
MFT_RIGHTJUSTIFY |
MFT_RIGHTORDER, -1, -1, 0, 0, 0, -1,
hbm, -1, 0,
OK );
1817 MFT_BITMAP |
MFT_MENUBARBREAK |
MFT_RADIOCHECK |
MFT_RIGHTJUSTIFY |
MFT_RIGHTORDER, 0, 0, 0, 0, 0, 0,
hbm, 0,
hbm,
1821 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP, -1, -1, 0, 0, 0, -1,
hbm, -1, 0,
OK );
1822 TMII_SMII(
MIIM_STATE, -1,
MFS_CHECKED |
MFS_DEFAULT |
MFS_GRAYED |
MFS_HILITE, 0, 0, 0, 0, 0, 0, 0, 0 );
1824 0,
MFS_CHECKED |
MFS_DEFAULT |
MFS_GRAYED |
MFS_HILITE, 0, 0, 0, 0, 0, 0, 80, 0,
1828 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP, -1, -1, 0, 0, 0, -1,
hbm, -1, 0,
OK );
1829 TMII_SMII(
MIIM_CHECKMARKS,
MFT_RADIOCHECK, 0, 0, 0,
hbm,
hbm, 0, 0, 0, 0 );
1831 MFT_BITMAP, 0, 0, 0,
hbm,
hbm, 0,
hbm, 0,
hbm,
1835 TMII_INSMI(
MIIM_TYPE,
MFT_BITMAP, -1, -1, 0, 0, 0, -1,
hbm, -1, 0,
OK );
1836 TMII_SMII(
MIIM_FTYPE,
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, (
HBITMAP)0x1234, 0, 0 );
1838 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, 0, 80, 0,
1841 MFT_BITMAP |
MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
hbm, 0,
hbm,
1844 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0, 0, 80, 0,
1846 TMII_SMII(
MIIM_BITMAP, 0, 0, 0, 0, 0, 0, 0, 0, 0,
NULL );
1848 MFT_OWNERDRAW, 0, 0, 0, 0, 0, 0,
NULL, 0,
NULL,
1867 static CHAR menuitem[] =
"MenuItem",
1868 menuitem2[] =
"MenuItem 2";
1877 strcpy(strIn,
"Case 1 MenuItem");
1878 info.dwTypeData = strIn;
1882 ok (rc,
"Inserting the menuitem failed\n");
1885 ok (
id == 0x1234,
"Getting the menuitem id failed(gave %x)\n",
id);
1892 info.dwTypeData = strback;
1893 info.cch =
sizeof(strback);
1896 ok (rc,
"Getting the menu items info failed\n");
1897 ok (
info.wID == 0x1234,
"IDs differ for the menuitem\n");
1898 ok (!
strcmp(
info.dwTypeData,
"Case 1 MenuItem"),
"Returned item has wrong label\n");
1905 info.dwTypeData = strback;
1906 info.cch =
sizeof(strback);
1909 ok (rc,
"Getting the menu items info failed\n");
1910 ok (
info.wID == 0x1234,
"IDs differ for the menuitem\n");
1911 ok (!
strcmp(
info.dwTypeData,
"Case 1 MenuItem"),
"Returned item has wrong label\n");
1919 strcpy(strIn,
"Case 2 SubMenu");
1921 ok (rc,
"Inserting the popup menu into the main menu failed\n");
1924 ok (
id == -1,
"Getting the menuitem id unexpectedly worked (gave %x)\n",
id);
1931 info.dwTypeData = strback;
1932 info.cch =
sizeof(strback);
1933 info.wID = 0xdeadbeef;
1936 ok (rc,
"Getting the menu items info failed\n");
1937 ok (
info.wID == (
UINT_PTR)hmenuSub,
"IDs differ for the menuitem\n");
1938 ok (!
strcmp(
info.dwTypeData,
"Case 2 SubMenu"),
"Returned item has wrong label\n");
1945 info.dwTypeData = strback;
1946 info.cch =
sizeof(strback);
1949 ok (rc,
"Getting the menu items info failed\n");
1950 ok (
info.wID == (
UINT_PTR)hmenuSub,
"IDs differ for the popup menu\n");
1951 ok (!
strcmp(
info.dwTypeData,
"Case 2 SubMenu"),
"Returned item has wrong label\n");
1960 strcpy(strIn,
"Case 2 MenuItem 1");
1961 info.dwTypeData = strIn;
1964 ok (rc,
"Inserting the menuitem failed\n");
1971 info.dwTypeData = strback;
1972 info.cch =
sizeof(strback);
1975 ok (rc,
"Getting the menu items info failed\n");
1976 ok (
info.wID == (
UINT_PTR)hmenuSub,
"IDs differ for the popup menu\n");
1977 ok (!
strcmp(
info.dwTypeData,
"Case 2 MenuItem 1"),
"Returned item has wrong label (%s)\n",
info.dwTypeData);
1986 strcpy(strIn,
"Case 2 MenuItem 2");
1987 info.dwTypeData = strIn;
1990 ok (rc,
"Inserting the menuitem failed\n");
1997 info.dwTypeData = strback;
1998 info.cch =
sizeof(strback);
2001 ok (rc,
"Getting the menu items info failed\n");
2002 ok (
info.wID == (
UINT_PTR)hmenuSub,
"IDs differ for the popup menu\n");
2003 ok (!
strcmp(
info.dwTypeData,
"Case 2 MenuItem 2"),
"Returned item has wrong label (%s)\n",
info.dwTypeData);
2020 info.dwTypeData = menuitem;
2024 ok (rc,
"Inserting the popup menu into the main menu failed\n");
2027 ok (rc,
"Inserting the sub menu menuitem failed\n");
2033 info.dwTypeData = menuitem2;
2037 ok (rc,
"Inserting the sub menu menuitem 2 failed\n");
2041 ok (
id == -1,
"Getting the sub menu id should have failed because it's a popup (gave %x)\n",
id);
2048 info.dwTypeData = strback;
2049 info.cch =
sizeof(strback);
2052 ok (rc,
"Getting the menus info failed\n");
2053 ok (
info.wID == (
UINT_PTR)hmenuSub,
"IDs differ for popup menu\n");
2054 ok (!
strcmp(
info.dwTypeData,
"MenuItem"),
"Returned item has wrong label (%s)\n",
info.dwTypeData);
2067 ok (rc,
"Inserting the popup menu into the main menu failed\n");
2070 ok (rc,
"Inserting the popup menu into the main menu failed\n");
2076 info.dwTypeData = menuitem;
2080 ok (rc,
"Inserting the sub menu menuitem failed\n");
2086 info.dwTypeData = menuitem2;
2090 ok (rc,
"Inserting the sub menu menuitem 2 failed\n");
2097 info.dwTypeData = strback;
2098 info.cch =
sizeof(strback);
2101 ok (rc,
"Getting the menus info failed\n");
2102 ok (
info.wID == (
UINT_PTR)hmenuSub,
"IDs differ for popup menu\n");
2103 ok (!
strcmp(
info.dwTypeData,
"MenuItem"),
"Returned item has wrong label (%s)\n",
info.dwTypeData);
2109 info.dwTypeData = strback;
2110 info.cch =
sizeof(strback);
2113 ok (rc,
"Getting the menus info failed\n");
2114 ok (
info.wID == (
UINT_PTR)hmenuSub2,
"IDs differ for popup menu\n");
2115 ok (!
strcmp(
info.dwTypeData,
"Submenu2"),
"Returned item has wrong label (%s)\n",
info.dwTypeData);
2132 ok (rc,
"Appending the popup menu to the main menu failed\n");
2135 ok (rc,
"Appending the item to the popup menu failed\n");
2143 ok(rc,
"Setting the ID for the popup menu failed\n");
2148 ok(rc,
"Getting the ID for the popup menu failed\n");
2149 ok(
info.wID == 101,
"The ID for the popup menu has not been set\n");
2156 info.dwTypeData = strback;
2157 info.cch =
sizeof(strback);
2160 ok (rc,
"Getting the menu info failed\n");
2161 ok (
info.wID == 101,
"IDs differ\n");
2162 ok (!
strcmp(
info.dwTypeData,
"Submenu"),
"Returned item has wrong label (%s)\n",
info.dwTypeData);
2169 info.dwTypeData = strback;
2170 info.cch =
sizeof(strback);
2173 ok (rc,
"Getting the menu info failed\n");
2174 ok (
info.wID == 102,
"IDs differ\n");
2175 ok (!
strcmp(
info.dwTypeData,
"Item"),
"Returned item has wrong label (%s)\n",
info.dwTypeData);
2236 i[0].ki.wVk =
i[1].ki.wVk = wVk;
2254 i[0].mi.dx =
i[1].mi.dx =
i[2].mi.dx
2255 = ((
r.left + 5) * 65535) / screen_w;
2256 i[0].mi.dy =
i[1].mi.dy =
i[2].mi.dy
2257 = ((
r.top + 5) * 65535) / screen_h;
2258 i[0].mi.dwFlags =
i[1].mi.dwFlags =
i[2].mi.dwFlags
2294 if (elapsed > 1000)
break;
2302 skip(
"test %u: failed to send input\n",
i );
2318 skip(
"test %u: didn't receive input\n",
i );
2342 case WM_UNINITMENUPOPUP:
2365 ok(br,
"msg %x: GetMenuBarInfo failed\n",
msg);
2367 ok(!mbi.
hwndMenu,
"msg %x: GetMenuBarInfo.hwndMenu wrong: %p expected NULL\n",
2369 ok(mbi.
hMenu ==
hmenu,
"msg %x: GetMenuBarInfo got wrong menu: %p expected %p\n",
2378 ok(br,
"msg %x: GetMenuBarInfo failed\n",
msg);
2383 "msg %x: GetMenuBarInfo.hwndMenu wrong: %p expected %sNULL\n",
2385 ok(mbi.
hMenu ==
hmenu,
"msg %x: GetMenuBarInfo got wrong menu: %p expected %p\n",
2390 "msg %x: GetMenuBarInfo.fFocused (%d) is wrong\n",
msg, mbi.
fFocused != 0);
2396 else if (
msg == WM_UNINITMENUPOPUP)
2421 ok (aclass,
"MenuTest class not created\n");
2422 if (!aclass)
return;
2426 ok (
hWnd !=
NULL,
"MenuTest window not created\n");
2462 HMENU hMenu, hPopupMenu;
2475 "AppendMenu should accept MF_HILITE\n");
2477 "InsertMenu should accept MF_HILITE\n");
2479 "ModifyMenu should accept MF_HILITE\n");
2482 "AppendMenu must not accept MF_DEFAULT\n");
2484 "InsertMenu must not accept MF_DEFAULT\n");
2486 "ModifyMenu must not accept MF_DEFAULT\n");
2493 HMENU hMenu, hPopupMenu;
2509 ok (aclass,
"HiliteMenuTest class could not be created\n");
2510 if (!aclass)
return;
2514 ok (
hWnd !=
NULL,
"HiliteMenuTest window could not be created\n");
2531 "HiliteMenuItem: Item 2 is hilited\n");
2537 "HiliteMenuItem: call should have failed.\n");
2541 "HiliteMenuItem: expected error ERROR_INVALID_WINDOW_HANDLE, got: %ld\n",
GetLastError());
2545 "HiliteMenuItem: call should have failed.\n");
2548 "HiliteMenuItem: expected error ERROR_INVALID_MENU_HANDLE, got: %ld\n",
GetLastError());
2551 "HiliteMenuItem: Item 2 is hilited\n");
2557 "HiliteMenuItem: call should have succeeded.\n");
2559 "HiliteMenuItem: expected error 0xdeadbeef, got: %ld\n",
GetLastError());
2562 "HiliteMenuItem: Item 2 is hilited\n");
2568 "HiliteMenuItem: call should have succeeded.\n");
2571 "HiliteMenuItem: expected error 0xdeadbeef, got: %ld\n",
GetLastError());
2574 "HiliteMenuItem: Item 2 is hilited\n");
2580 "HiliteMenuItem: call should not have failed.\n");
2582 "HiliteMenuItem: expected error 0xdeadbeef, got: %ld\n",
GetLastError());
2587 "HiliteMenuItem: Item 2 is not hilited\n");
2594 "HiliteMenuItem: call should not have failed.\n");
2596 "HiliteMenuItem: expected error 0xdeadbeef, got: %ld\n",
GetLastError());
2599 "HiliteMenuItem: Item 2 is hilited\n");
2605 "HiliteMenuItem: call should not have failed.\n");
2607 "HiliteMenuItem: expected error 0xdeadbeef, got: %ld\n",
GetLastError());
2612 "HiliteMenuItem: Item 3 is not hilited\n");
2619 "HiliteMenuItem: call should not have failed.\n");
2621 "HiliteMenuItem: expected error 0xdeadbeef, got: %ld\n",
GetLastError());
2624 "HiliteMenuItem: Item 3 is hilited\n");
2635 ok (
count != -1,
"GetMenuItemCount returned -1\n");
2642 memset(&mii, 0,
sizeof(mii));
2643 mii.
cbSize =
sizeof(mii);
2646 ok(
ret,
"GetMenuItemInfo(%u) failed\n",
i);
2649 trace(
"item #%u: fType %04x, fState %04x, wID %u, hSubMenu %p\n",
2658 ok(mii.
fType == checked_type,
"id %u: expected fType %04x, got %04x\n", checked_cmd, checked_type, mii.
fType);
2659 ok(mii.
fState == checked_state,
"id %u: expected fState %04x, got %04x\n", checked_cmd, checked_state, mii.
fState);
2665 if (mii.
wID == checked_cmd)
2667 ok(mii.
fType == checked_type,
"id %u: expected fType %04x, got %04x\n", checked_cmd, checked_type, mii.
fType);
2668 ok(mii.
fState == checked_state,
"id %u: expected fState %04x, got %04x\n", checked_cmd, checked_state, mii.
fState);
2669 ok(mii.
wID != 0,
"id %u: not expected wID 0\n", checked_cmd);
2678 ok(mii.
wID == 0,
"id %u: expected wID 0, got %u\n", checked_cmd, mii.
wID);
2682 ok(mii.
fState == 0,
"id %u: expected fState 0, got %04x\n", checked_cmd, mii.
fState);
2683 ok(mii.
wID != 0,
"id %u: not expected wID 0\n", checked_cmd);
2695 memset(&mii, 0,
sizeof(mii));
2696 mii.
cbSize =
sizeof(mii);
2699 ok(
ret,
"SetMenuItemInfo(%u) failed\n",
id);
2713 ok(
ret,
"CheckMenuRadioItem failed\n");
2718 ok(!
ret,
"CheckMenuRadioItem should return FALSE\n");
2727 ok(!
ret,
"CheckMenuRadioItem should return FALSE\n");
2731 ok(
ret,
"CheckMenuRadioItem failed\n");
2736 ok(!
ret,
"CheckMenuRadioItem should return FALSE\n");
2745 ok(!
ret,
"CheckMenuRadioItem should return FALSE\n");
2790 ok(
ret,
"AppendMenu failed\n");
2792 ok(
ret,
"AppendMenu failed\n");
2794 ok(
ret,
"AppendMenu failed\n");
2805 memset(&mii, 0,
sizeof(mii));
2806 mii.
cbSize =
sizeof(mii);
2811 ok(
ret,
"GetMenuItemInfo(%u) failed\n",
i);
2813 trace(
"item #%u: fType %04x, fState %04x, wID %u, dwTypeData %s\n",
2846 for (
i = 0;
i < item_count;
i++)
2850 ok(
ret,
"%d: AppendMenu(%04x, %04x, %p) error %lu\n",
2869 for (
i = 0;
i < item_count;
i++)
2892 ok(
ret,
"%d: InsertMenuItem(%04x, %04x, %p) error %lu\n",
2904 ok(
count == item_count,
"expected %d, got %d menu items\n",
count, item_count);
2911 memset(&mii, 0,
sizeof(mii));
2912 mii.
cbSize =
sizeof(mii);
2917 ok(
ret,
"GetMenuItemInfo(%u) failed\n",
i);
2920 trace(
"item #%u: fType %04x, fState %04x, wID %04x, hbmp %p\n",
2926 "%u: expected wID %04x, got %04x\n",
i,
item[
i].id, mii.
wID);
2927 if (mii.hbmpItem || !
item[
i].str)
2932 "%u: expected hbmpItem %p, got %p\n",
i,
item[
i].
str, mii.hbmpItem);
3018#define create_menu(a) create_menu_from_data((a), ARRAY_SIZE(a))
3019#define create_menuitem(a) create_menuitem_from_data((a), ARRAY_SIZE(a))
3020#define compare_menu(h, a) compare_menu_data((h), (a), ARRAY_SIZE(a))
3056#undef create_menuitem
3084 ok( !
ret,
"GetMenuInfo() should have failed\n");
3086 broken(gle == 0xdeadbeef),
3092 ok( !
ret,
"GetMenuInfo() should have failed\n");
3094 broken(gle == 0xdeadbeef),
3100 ok(
ret,
"GetMenuInfo() should have succeeded\n");
3101 ok( gle == 0xdeadbeef,
"GetMenuInfo() error got %lu\n", gle);
3106 ok( !
ret,
"GetMenuInfo() should have failed\n");
3108 broken(gle == 0xdeadbeef),
3136 ok( !
ret,
"SetMenuInfo() should have failed\n");
3138 broken(gle == 0xdeadbeef),
3144 ok( !
ret,
"SetMenuInfo() should have failed\n");
3146 broken(gle == 0xdeadbeef),
3152 ok(
ret,
"SetMenuInfo() should have succeeded\n");
3153 ok( gle == 0xdeadbeef,
"SetMenuInfo() error got %lu\n", gle);
3158 ok( !
ret,
"SetMenuInfo() should have failed\n");
3160 broken(gle == 0xdeadbeef),
3166 mi.fMask = MIM_STYLE;
3169 ok(
ret,
"GetMenuInfo() should have succeeded\n");
3170 ok( gle == 0xdeadbeef,
"GetMenuInfo() error got %lu\n", gle);
3171 ok( !(
mi.dwStyle &
MNS_CHECKORBMP),
"menustyle was not expected to have the MNS_CHECKORBMP flag\n");
3174 mi.fMask = MIM_STYLE;
3177 ok(
ret,
"GetMenuInfo() should have succeeded\n");
3178 ok( gle == 0xdeadbeef,
"GetMenuInfo() error got %lu\n", gle);
3179 ok( !(
mi.dwStyle &
MNS_CHECKORBMP),
"menustyle was not expected to have the MNS_CHECKORBMP flag\n");
3183 mi.fMask = MIM_STYLE | MIM_APPLYTOSUBMENUS;
3187 ok(
ret,
"SetMenuInfo() should have succeeded\n");
3188 ok( gle == 0xdeadbeef,
"SetMenuInfo() error got %lu\n", gle);
3192 mi.fMask = MIM_STYLE;
3195 ok(
ret,
"GetMenuInfo() should have succeeded\n");
3196 ok( gle == 0xdeadbeef,
"GetMenuInfo() error got %lu\n", gle);
3197 ok(
mi.dwStyle &
MNS_CHECKORBMP,
"menustyle was expected to have the MNS_CHECKORBMP flag\n");
3200 mi.fMask = MIM_STYLE;
3203 ok(
ret,
"GetMenuInfo() should have succeeded\n");
3204 ok( gle == 0xdeadbeef,
"GetMenuInfo() error got %lu\n", gle);
3205 ok(
mi.dwStyle &
MNS_CHECKORBMP,
"menustyle was expected to have the MNS_CHECKORBMP flag\n");
3209 mi.fMask = MIM_STYLE ;
3213 ok(
ret,
"SetMenuInfo() should have succeeded\n");
3214 ok( gle == 0xdeadbeef,
"SetMenuInfo() error got %lu\n", gle);
3218 mi.fMask = MIM_STYLE;
3221 ok(
ret,
"GetMenuInfo() should have succeeded\n");
3222 ok( gle == 0xdeadbeef,
"GetMenuInfo() error got %lu\n", gle);
3223 ok(
mi.dwStyle &
MNS_NOCHECK,
"menustyle was expected to have the MNS_NOCHECK flag\n");
3226 mi.fMask = MIM_STYLE;
3229 ok(
ret,
"GetMenuInfo() should have succeeded\n");
3230 ok( gle == 0xdeadbeef,
"GetMenuInfo() error got %lu\n", gle);
3231 ok( !(
mi.dwStyle &
MNS_NOCHECK),
"menustyle was not expected to have the MNS_NOCHECK flag\n");
3235 mi.fMask = MIM_BACKGROUND;
3237 ok(
ret,
"GetMenuInfo() should have succeeded\n" );
3238 ok(
mi.hbrBack ==
NULL,
"got %p\n",
mi.hbrBack );
3243 ok(
ret,
"SetMenuInfo() should have succeeded\n" );
3246 ok(
ret,
"GetMenuInfo() should have succeeded\n" );
3247 ok(
mi.hbrBack == brush,
"got %p original %p\n",
mi.hbrBack, brush );
3251 ok(
ret,
"SetMenuInfo() should have succeeded\n" );
3253 ok(
ret,
"GetMenuInfo() should have succeeded\n" );
3254 ok(
mi.hbrBack ==
NULL,
"got %p\n",
mi.hbrBack );
3288 for( Ex = 0; Ex < 2; Ex++)
3304 ok( !
ret,
"TrackPopupMenu%s should have failed\n", Ex ?
"Ex" :
"");
3306 ||
broken (gle == 0xdeadbeef)
3308 ,
"TrackPopupMenu%s error got %lu expected %u\n",
3311 "got unexpected message(s)%s%s%s\n",
3320 ok( !
ret,
"TrackPopupMenu%s should have failed\n", Ex ?
"Ex" :
"");
3322 ||
broken (gle == 0xdeadbeef)
3324 ,
"TrackPopupMenu%s error got %lu expected %u\n",
3327 "got unexpected message(s)%s%s%s\n",
3337 ok( !
ret,
"TrackPopupMenu%s should have failed\n", Ex ?
"Ex" :
"");
3340 "got unexpected message(s)%s%s%s\n",
3350 ok(
ret == 0,
"TrackPopupMenu%s returned %d expected zero\n", Ex ?
"Ex" :
"",
ret);
3353 ||
broken (gle == 0xdeadbeef)
3354 ,
"TrackPopupMenu%s error got %lu expected %u or %u\n",
3357 "missed expected message(s)%s%s%s\n",
3363 ok(
ret,
"AppendMenA has failed!\n");
3368 ok(
ret == 0,
"TrackPopupMenu%s returned %d expected zero\n", Ex ?
"Ex" :
"",
ret);
3371 ||
broken (gle == 0xdeadbeef)
3372 ,
"TrackPopupMenu%s error got %lu expected %u or %u\n",
3375 "missed expected message(s)%s%s%s\n",
3426 ok(
ret,
"AppendMenu failed.\n");
3428 ok(
ret,
"AppendMenu failed.\n");
3476 "CreateWindowEx failed with error %ld\n",
GetLastError());
3518 ok(
ret == 0,
"Sending WM_SYSCOMMAND/SC_KEYMENU failed lasterror is %lu\n",
GetLastError());
3541 if( !hmenus[
i])
break;
3543 ok(
i ==
NR_MENUS,
"could not create more than %d menu's\n",
i);
3548 trace(
"Maximum depth is %d\n",
i);
3552 "no ( or very large) limit on menu depth!\n");
3566 ok( menu1 && menu2,
"error creating menus.\n");
3578 "ModifyMenu should have failed.\n");
3600 skip(
"interactive alignment tests.\n");
3605 "Menu text alignment Test\nPlease make a selection.",
3612 memset( bmfill, 0xcc,
sizeof( bmfill));
3616 ok( hbm1 && hbm2 && hbm3,
"Creating bitmaps failed\n");
3618 ok(
menu !=
NULL,
"CreatePopupMenu() failed\n");
3620 mi.fMask = MIM_STYLE;
3624 ok( 0 ==
mi.dwStyle,
"menuinfo style is %lx\n",
mi.dwStyle);
3629 mii.hbmpItem = hbm1;
3630 mii.
dwTypeData = (
LPSTR)
" OK: menu texts are correctly left-aligned.";
3632 ok(
ret,
"InsertMenuItem() failed\n");
3635 mii.hbmpItem = hbm2;
3638 ok(
ret,
"InsertMenuItem() failed\n");
3640 ok(
ret != 2,
"User indicated that menu text alignment test 1 failed %ld\n",
ret);
3644 mii.hbmpItem = hbm3;
3647 ok(
ret,
"InsertMenuItem() failed\n");
3650 mii.hbmpItem = hbm1;
3653 mii.
dwTypeData = (
LPSTR)
" OK: menu texts are to the right of the bitmaps........";
3655 ok(
ret,
"SetMenuItemInfo() failed\n");
3657 mii.hbmpItem = hbm2;
3658 mii.
dwTypeData = (
LPSTR)
" FAIL: menu texts are below the first bitmap. ";
3660 ok(
ret,
"SetMenuItemInfo() failed\n");
3662 ok(
ret != 2,
"User indicated that menu text alignment test 2 failed %ld\n",
ret);
3669 ok(
ret,
"SetMenuItemInfo() failed\n");
3672 mii.hbmpItem =
NULL;
3675 ok(
ret,
"SetMenuItemInfo() failed\n");
3677 mii.hbmpItem =
NULL;
3678 mii.
dwTypeData = (
LPSTR)
" FAIL: menu texts are NOT below the bitmap.";
3680 ok(
ret,
"SetMenuItemInfo() failed\n");
3682 ok(
ret != 2,
"User indicated that menu text alignment test 3 failed %ld\n",
ret);
3702 ok(
ret,
"AppendMenu failed.\n");
3704 ok(
ret,
"AppendMenu failed.\n");
3799 static char string[] =
"string";
3807 ok(
hmenu != 0,
"CreateMenu failed\n");
3809 ok(
ret,
"AppendMenu failed\n");
3814 ok(
hmenu != 0,
"CreateMenu failed\n");
3817 ok(
ret,
"AppendMenu failed\n");
3822 ok(
hmenu != 0,
"CreateMenu failed\n");
3825 ok(
ret,
"AppendMenu failed\n");
3830 ok(
hmenu != 0,
"CreateMenu failed\n");
3832 ok(hsubmenu != 0,
"CreateMenu failed\n");
3834 ok(
ret,
"AppendMenu failed\n");
3840 ok(
hmenu != 0,
"CreateMenu failed\n");
3842 ok(hsubmenu != 0,
"CreateMenu failed\n");
3844 ok(
ret,
"AppendMenu failed\n");
3850 ok(
hmenu != 0,
"CreateMenu failed\n");
3852 ok(hsubmenu != 0,
"CreateMenu failed\n");
3854 ok(
ret,
"AppendMenu failed\n");
3860 ok(
hmenu != 0,
"CreateMenu failed\n");
3862 ok(hsubmenu != 0,
"CreatePopupMenu failed\n");
3864 ok(
ret,
"AppendMenu failed\n");
3870 ok(
hmenu != 0,
"CreateMenu failed\n");
3872 ok(hsubmenu != 0,
"CreatePopupMenu failed\n");
3874 ok(
ret,
"AppendMenu failed\n");
3880 ok(
hmenu != 0,
"CreateMenu failed\n");
3882 ok(hsubmenu != 0,
"CreatePopupMenu failed\n");
3884 ok(
ret,
"AppendMenu failed\n");
3890 ok(
hmenu != 0,
"CreateMenu failed\n");
3892 ok(
ret,
"AppendMenu failed\n");
3896 ok(
ret,
"ModifyMenu failed\n");
3898 memset(&mii, 0,
sizeof(mii));
3899 mii.
cbSize =
sizeof(mii);
3903 ok(!
ret,
"InsertMenuItem should fail\n");
3905 ok(!
ret,
"SetMenuItemInfo should fail\n");
3909 ok(
ret,
"InsertMenuItem failed\n");
3915 ok(
ret,
"SetMenuItemInfo failed\n");
3923 ok(
hmenu != 0,
"CreateMenu failed\n");
3926 memset(&mii, 0,
sizeof(mii));
3927 mii.
cbSize =
sizeof(mii);
3931 mii.hbmpItem =
hbmp;
3933 ok(
ret,
"InsertMenuItem failed\n");
3934 memset(&mii, 0x81,
sizeof(mii));
3936 mii.
cbSize =
sizeof(mii);
3942 ok(
ret,
"GetMenuItemInfo failed\n");
3945 ok(mii.
wID == 0,
"expected 0, got %#x\n", mii.
wID);
3949 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
3951 ok(mii.hbmpItem ==
hbmp,
"expected %p, got %p\n",
hbmp, mii.hbmpItem);
3953 memset(&mii, 0x81,
sizeof(mii));
3954 mii.
cbSize =
sizeof(mii);
3958 ok(
ret,
"GetMenuItemInfo failed\n");
3960 ok(mii.
fState == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
fState);
3961 ok(mii.
wID == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
wID);
3965 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
3966 ok(mii.hbmpItem ==
hbmp,
"expected %p, got %p\n",
hbmp, mii.hbmpItem);
3968 memset(&mii, 0x81,
sizeof(mii));
3970 mii.
cbSize =
sizeof(mii);
3976 ok(
ret,
"GetMenuItemInfo failed\n");
3979 ok(mii.
wID == 0,
"expected 0, got %#x\n", mii.
wID);
3983 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
3984 ok(mii.hbmpItem ==
hbmp,
"expected %p, got %p\n",
hbmp, mii.hbmpItem);
3990 ok(
hmenu != 0,
"CreateMenu failed\n");
3993 memset(&mii, 0,
sizeof(mii));
3994 mii.
cbSize =
sizeof(mii);
4000 ok(
ret,
"InsertMenuItem failed\n");
4001 memset(&mii, 0x81,
sizeof(mii));
4003 mii.
cbSize =
sizeof(mii);
4009 ok(
ret,
"GetMenuItemInfo failed\n");
4012 ok(mii.
wID == 0,
"expected 0, got %#x\n", mii.
wID);
4016 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4020 memset(&mii, 0x81,
sizeof(mii));
4021 mii.
cbSize =
sizeof(mii);
4027 ok(
ret,
"GetMenuItemInfo failed\n");
4029 ok(mii.
fState == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
fState);
4030 ok(mii.
wID == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
wID);
4034 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4038 memset(&mii, 0x81,
sizeof(mii));
4040 mii.
cbSize =
sizeof(mii);
4046 ok(
ret,
"GetMenuItemInfo failed\n");
4049 ok(mii.
wID == 0,
"expected 0, got %#x\n", mii.
wID);
4053 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4061 ok(
hmenu != 0,
"CreateMenu failed\n");
4064 memset(&mii, 0,
sizeof(mii));
4065 mii.
cbSize =
sizeof(mii);
4070 mii.hbmpItem =
hbmp;
4072 ok(
ret,
"InsertMenuItem failed\n");
4073 memset(&mii, 0x81,
sizeof(mii));
4075 mii.
cbSize =
sizeof(mii);
4081 ok(
ret,
"GetMenuItemInfo failed\n");
4084 ok(mii.
wID == 0,
"expected 0, got %#x\n", mii.
wID);
4088 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4090 ok(mii.hbmpItem == 0,
"expected 0, got %p\n", mii.hbmpItem);
4092 memset(&mii, 0x81,
sizeof(mii));
4094 mii.
cbSize =
sizeof(mii);
4100 ok(
ret,
"GetMenuItemInfo failed\n");
4102 ok(mii.
fState == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
fState);
4103 ok(mii.
wID == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
wID);
4107 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4109 ok(mii.hbmpItem == 0,
"expected 0, got %p\n", mii.hbmpItem);
4117 ok(
hmenu != 0,
"CreateMenu failed\n");
4118 memset(&mii, 0,
sizeof(mii));
4119 mii.
cbSize =
sizeof(mii);
4124 ok(
ret,
"InsertMenuItem failed\n");
4125 memset(&mii, 0x81,
sizeof(mii));
4127 mii.
cbSize =
sizeof(mii);
4133 ok(
ret,
"GetMenuItemInfo failed\n");
4136 ok(mii.
wID == 0,
"expected 0, got %#x\n", mii.
wID);
4140 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4142 ok(mii.hbmpItem == 0,
"expected 0, got %p\n", mii.hbmpItem);
4148 ok(
ret,
"SetMenuItemInfo failed\n");
4149 memset(&mii, 0x81,
sizeof(mii));
4151 mii.
cbSize =
sizeof(mii);
4157 ok(
ret,
"GetMenuItemInfo failed\n");
4160 ok(mii.
wID == 0,
"expected 0, got %#x\n", mii.
wID);
4164 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4168 memset(&mii, 0x81,
sizeof(mii));
4170 mii.
cbSize =
sizeof(mii);
4176 ok(
ret,
"GetMenuItemInfo failed\n");
4178 ok(mii.
fState == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
fState);
4179 ok(mii.
wID == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
wID);
4183 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4189 mii.hbmpItem =
hbmp;
4191 ok(
ret,
"SetMenuItemInfo failed\n");
4192 memset(&mii, 0x81,
sizeof(mii));
4194 mii.
cbSize =
sizeof(mii);
4200 ok(
ret,
"GetMenuItemInfo failed\n");
4203 ok(mii.
wID == 0,
"expected 0, got %#x\n", mii.
wID);
4207 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4209 ok(mii.hbmpItem ==
hbmp,
"expected %p, got %p\n",
hbmp, mii.hbmpItem);
4211 memset(&mii, 0x81,
sizeof(mii));
4213 mii.
cbSize =
sizeof(mii);
4219 ok(
ret,
"GetMenuItemInfo failed\n");
4221 ok(mii.
fState == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
fState);
4222 ok(mii.
wID == 0x81818181,
"expected 0x81818181, got %#x\n", mii.
wID);
4226 ok(mii.
cch == 6,
"expected 6, got %u\n", mii.
cch);
4227 ok(mii.hbmpItem ==
hbmp,
"expected %p, got %p\n",
hbmp, mii.hbmpItem);
static const char * wine_dbgstr_rect(const RECT *prc)
static const WCHAR empty[1]
#define ERROR_INVALID_PARAMETER
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
_ACRTIMP char *__cdecl strchr(const char *, int)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLdouble GLdouble GLdouble GLdouble top
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static const WCHAR emptyW[]
static const WCHAR testW[]
static const SecPkgInfoW infoW
#define todo_wine_if(is_todo)
static const CHAR emptyA[]
static CHAR string2[MAX_PATH]
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
unsigned __int3264 UINT_PTR
#define MAKEINTRESOURCE(i)
#define WS_OVERLAPPEDWINDOW
_Out_opt_ int _Out_opt_ int * cy
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define FIELD_OFFSET(t, f)
INT WINAPI DrawTextA(HDC hdc, LPCSTR str, INT count, LPRECT rect, UINT flags)
static UINT WPARAM LPARAM BOOL ansi
UINT WINAPI SendInput(UINT, LPINPUT, int)
DWORD WINAPI GetLastError(void)
#define ERROR_POPUP_ALREADY_ACTIVE
#define ERROR_INVALID_MENU_HANDLE
#define ERROR_INVALID_WINDOW_HANDLE
HGDIOBJ WINAPI GetStockObject(_In_ int)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
int WINAPI GetObjectA(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
BOOL WINAPI TextOutA(_In_ HDC hdc, _In_ int x, _In_ int y, _In_reads_(c) LPCSTR lpString, _In_ int c)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI GetTextExtentPointA(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE lpsz)
BOOL WINAPI SetMenuItemInfoA(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOA)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
#define MOUSEEVENTF_ABSOLUTE
BOOL WINAPI EndMenu(void)
#define SetWindowLongPtrA
HMENU WINAPI CreatePopupMenu(void)
BOOL WINAPI SetMenu(_In_ HWND, _In_opt_ HMENU)
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
UINT WINAPI GetMenuState(_In_ HMENU, _In_ UINT, _In_ UINT)
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
#define MOUSEEVENTF_LEFTUP
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define HBMMENU_POPUP_RESTORE
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
struct tagMENUITEMINFOA MENUITEMINFOA
int WINAPI GetMenuStringW(_In_ HMENU hMenu, _In_ UINT uIDItem, _Out_writes_opt_(cchMax) LPWSTR lpString, _In_ int cchMax, _In_ UINT flags)
#define HBMMENU_POPUP_MINIMIZE
BOOL WINAPI InsertMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
HMENU WINAPI CreateMenu(void)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
BOOL WINAPI SetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI GetCapture(void)
BOOL WINAPI IsMenu(_In_ HMENU)
#define GetWindowLongPtrA
UINT WINAPI GetMenuItemID(_In_ HMENU, _In_ int)
HBITMAP WINAPI LoadBitmapA(_In_opt_ HINSTANCE, _In_ LPCSTR)
HMENU WINAPI GetSystemMenu(_In_ HWND, _In_ BOOL)
BOOL WINAPI SetCursorPos(_In_ int, _In_ int)
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
BOOL WINAPI InsertMenuA(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCSTR)
int WINAPI GetMenuStringA(_In_ HMENU hMenu, _In_ UINT uIDItem, _Out_writes_opt_(cchMax) LPSTR lpString, _In_ int cchMax, _In_ UINT flags)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
BOOL WINAPI HiliteMenuItem(_In_ HWND, _In_ HMENU, _In_ UINT, _In_ UINT)
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
struct tagMENUBARINFO MENUBARINFO
BOOL WINAPI ModifyMenuA(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCSTR)
#define MOUSEEVENTF_LEFTDOWN
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
BOOL WINAPI InsertMenuItemA(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOA)
#define HBMMENU_POPUP_CLOSE
BOOL WINAPI DrawMenuBar(_In_ HWND)
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI SetMenuInfo(_In_ HMENU, _In_ LPCMENUINFO)
BOOL WINAPI UpdateWindow(_In_ HWND)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI GetMenuInfo(_In_ HMENU, _Inout_ LPMENUINFO)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI AppendMenuA(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCSTR)
LONG WINAPI GetDialogBaseUnits(void)
BOOL WINAPI GetMenuItemRect(_In_opt_ HWND, _In_ HMENU, _In_ UINT, _Out_ LPRECT)
BOOL WINAPI CheckMenuRadioItem(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT, _In_ UINT)
#define HBMMENU_MBAR_CLOSE
#define MAKEINTRESOURCEA(i)
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI GetMenuItemInfoA(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOA)
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
HMENU WINAPI LoadMenuIndirectA(_In_ const MENUTEMPLATE *)
BOOL WINAPI ModifyMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
struct tagMENUINFO MENUINFO
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI GetMenuBarInfo(_In_ HWND, _In_ LONG, _In_ LONG, _Inout_ PMENUBARINFO)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
HMENU WINAPI GetMenu(_In_ HWND)
BOOL WINAPI InsertMenuItemW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
HMENU WINAPI LoadMenuA(_In_opt_ HINSTANCE, _In_ LPCSTR)