27#define NUM_MSG_SEQUENCES 1
28#define PAGER_SEQ_INDEX 0
38 "You should have received a copy of the GNU Lesser General Public License along with this ...";
40 L"You should have received a copy of the GNU Lesser General Public License along with this ...";
42 L"You should have received a copy of the GNU Lesser General Public";
44 L"You should have received a copy of the GNU Lesser General Public License along w";
173 {
NULL, 0,
NULL,
NULL,
test_w, -1,
test_w,
NULL,
test_a,
test_w,
sizeof(
test_w)},
174 {
NULL, 0,
NULL,
NULL,
L"", -1,
L"",
NULL,
"",
NULL, 0,
test_w},
280 static LONG defwndproc_counter = 0;
325 defwndproc_counter++;
327 defwndproc_counter--;
354 return CreateWindowA(
"Pager test parent class",
"Pager test parent window",
388 static LONG defwndproc_counter;
394 if (defwndproc_counter)
408 defwndproc_counter++;
410 defwndproc_counter--;
438 ok(pager !=
NULL,
"Fail to create pager\n");
488 ok(pager !=
NULL,
"failed to create pager control\n");
499 ok(pager !=
NULL,
"failed to create pager control\n");
514 case WM_NOTIFYFORMAT:
532 static const WCHAR class_w[] = {
'P',
'a',
'g',
'e',
'r',
' ',
'n',
'o',
't',
'i',
'f',
'y',
'f',
533 'o',
'r',
'm',
'a',
't',
' ',
'c',
'l',
'a',
's',
's', 0};
544 static const WCHAR class_w[] = {
'P',
'a',
'g',
'e',
'r',
' ',
'n',
'o',
't',
'i',
'f',
'y',
'f',
545 'o',
'r',
'm',
'a',
't',
' ',
'c',
'l',
'a',
's',
's', 0};
546 static const WCHAR parent_w[] = {
'p',
'a',
'r',
'e',
'n',
't', 0};
547 static const WCHAR pager_w[] = {
'p',
'a',
'g',
'e',
'r', 0};
548 static const WCHAR child_w[] = {
'c',
'h',
'i',
'l',
'd', 0};
556 ok(bret,
"Register test class failed, error 0x%08x\n",
GetLastError());
561 parent =
CreateWindowW(class_w, parent_w,
WS_OVERLAPPED, 0, 0, 100, 100, 0, 0,
GetModuleHandleW(0), 0);
563 pager =
CreateWindowW(
WC_PAGESCROLLERW, pager_w,
WS_CHILD, 0, 0, 100, 100,
parent, 0,
GetModuleHandleW(0), 0);
564 ok(pager !=
NULL,
"CreateWindow failed\n");
565 child =
CreateWindowW(class_w, child_w,
WS_CHILD, 0, 0, 100, 100, pager, 0,
GetModuleHandleW(0), 0);
612 ok(!*
text[0],
"Code 0x%08x test 0x%08x sub test %d expect empty text, got %s\n",
624 ok(*text_max == send_data->
send_text_max,
"Code 0x%08x test 0x%08x sub test %d expect %d, got %d\n",
635 ok(*text_max ==
receive_data->send_text_max,
"Code 0x%08x test 0x%08x sub test %d expect %d, got %d\n",
651 ok(!*
text[0],
"Code 0x%08x test 0x%08x sub test %d expect empty text, got %s\n",
666 if (
data->expect_sztext)
677 if (
data->expect_pszformat)
688 static const WCHAR test[] = {
't',
'e',
's',
't', 0};
706 skip(
"Notification code mismatch, skipping lParam check\n");
894 ok(0,
"Unexpected message 0x%08x\n",
hdr->code);
901 case WM_NOTIFYFORMAT:
934 ok(
hdr->code == code_change ? ansi : unicode,
"Expect 0x%08x, got 0x%08x\n",
hdr->code,
935 code_change ? ansi : unicode);
1003 if (
data->send_text)
1010 if (
data->return_text)
1014 "Code 0x%08x sub test %d expect %s, got %s\n", para->
code_unicode,
i,
1021 ok(
data->return_text_max == *para->
text_max,
"Code 0x%08x sub test %d expect %d, got %d\n",
1043 ok(!*para->
text,
"Expect null text\n");
1052 memset(&nmcbedb, 0,
sizeof(nmcbedb));
1058 memset(&nmcbeed, 0,
sizeof(nmcbeed));
1075 memset(&nmdtf, 0,
sizeof(nmdtf));
1079 if (
data->return_szdisplay)
1080 ok(!
lstrcmpW(nmdtf.szDisplay,
data->return_szdisplay),
"Sub test %d expect %s, got %s\n",
i,
1082 if (
data->return_pszdisplay)
1083 ok(!
lstrcmpW(nmdtf.pszDisplay,
data->return_pszdisplay),
"Sub test %d expect %s, got %s\n",
i,
1129 memset(&nmttdi, 0,
sizeof(nmttdi));
1133 if (
data->return_sztext)
1135 if (
data->return_sztext_size == -1)
1141 if (
data->return_lpsztext)
1144 ok(nmttdi.
lpszText ==
data->return_lpsztext,
"Sub test %d expect %s, got %s\n",
i,
1150 if (
data->return_hinst)
1151 ok(nmttdi.
hinst ==
data->return_hinst,
"Sub test %d expect %p, got %p\n",
i,
data->return_hinst,
1161 static NMCOMBOBOXEXW nmcbe;
1162 /* Date and Time Picker */
1163 static NMDATETIMEFORMATQUERYW nmdtfq;
1164 static NMDATETIMEWMKEYDOWNW nmdtkd;
1165 static NMDATETIMESTRINGW nmdts;
1167 static NMHDDISPINFOW nmhddi;
1169 static NMLVDISPINFOW nmlvdi;
1170 static NMLVGETINFOTIPW nmlvgit;
1171 static NMLVFINDITEMW nmlvfi;
1173 static NMTBRESTORE nmtbr;
1174 static NMTBSAVE nmtbs;
1175 static NMTOOLBARW nmtb;
1176 static NMTBDISPINFOW nmtbdi;
1177 static NMTBGETINFOTIPW nmtbgit;
1179 static NMTVDISPINFOW nmtvdi;
1180 static NMTVGETINFOTIPW nmtvgit;
1181 static NMTREEVIEWW nmtv;
1182 static const struct generic_text_helper_para paras[] =
1185 {&nmcbe, sizeof(nmcbe), &nmcbe.ceItem.mask, CBEIF_TEXT, &nmcbe.ceItem.pszText, &nmcbe.ceItem.cchTextMax,
1186 CBEN_INSERTITEM, CBEN_INSERTITEM, DONT_CONVERT_SEND | DONT_CONVERT_RECEIVE},
1187 {&nmcbe, sizeof(nmcbe), &nmcbe.ceItem.mask, CBEIF_TEXT, &nmcbe.ceItem.pszText, &nmcbe.ceItem.cchTextMax,
1188 CBEN_DELETEITEM, CBEN_DELETEITEM, DONT_CONVERT_SEND | DONT_CONVERT_RECEIVE},
1189 {&nmcbe, sizeof(nmcbe), &nmcbe.ceItem.mask, CBEIF_TEXT, &nmcbe.ceItem.pszText, &nmcbe.ceItem.cchTextMax,
1190 CBEN_GETDISPINFOW, CBEN_GETDISPINFOA, ZERO_SEND | SET_NULL_IF_NO_MASK | DONT_CONVERT_SEND | CONVERT_RECEIVE},
1191 /* Date and Time Picker */
1192 {&nmdtfq, sizeof(nmdtfq), NULL, 0, (WCHAR **)&nmdtfq.pszFormat, NULL, DTN_FORMATQUERYW, DTN_FORMATQUERYA,
1194 {&nmdtkd, sizeof(nmdtkd), NULL, 0, (WCHAR **)&nmdtkd.pszFormat, NULL, DTN_WMKEYDOWNW, DTN_WMKEYDOWNA,
1196 {&nmdts, sizeof(nmdts), NULL, 0, (WCHAR **)&nmdts.pszUserString, NULL, DTN_USERSTRINGW, DTN_USERSTRINGA,
1199 {&nmhddi, sizeof(nmhddi), &nmhddi.mask, HDI_TEXT, &nmhddi.pszText, &nmhddi.cchTextMax, HDN_GETDISPINFOW,
1200 HDN_GETDISPINFOA, SEND_EMPTY_IF_NULL | CONVERT_SEND | CONVERT_RECEIVE},
1202 {&nmlvfi, sizeof(nmlvfi), &nmlvfi.lvfi.flags, LVFI_STRING, (WCHAR **)&nmlvfi.lvfi.psz, NULL,
1203 LVN_INCREMENTALSEARCHW, LVN_INCREMENTALSEARCHA, CONVERT_SEND},
1204 {&nmlvfi, sizeof(nmlvfi), &nmlvfi.lvfi.flags, LVFI_SUBSTRING, (WCHAR **)&nmlvfi.lvfi.psz, NULL, LVN_ODFINDITEMW,
1205 LVN_ODFINDITEMA, CONVERT_SEND},
1206 {&nmlvdi, sizeof(nmlvdi), &nmlvdi.item.mask, LVIF_TEXT, &nmlvdi.item.pszText, &nmlvdi.item.cchTextMax,
1207 LVN_BEGINLABELEDITW, LVN_BEGINLABELEDITA, SET_NULL_IF_NO_MASK | CONVERT_SEND | CONVERT_RECEIVE},
1208 {&nmlvdi, sizeof(nmlvdi), &nmlvdi.item.mask, LVIF_TEXT, &nmlvdi.item.pszText, &nmlvdi.item.cchTextMax,
1209 LVN_ENDLABELEDITW, LVN_ENDLABELEDITA, SET_NULL_IF_NO_MASK | CONVERT_SEND | CONVERT_RECEIVE},
1210 {&nmlvdi, sizeof(nmlvdi), &nmlvdi.item.mask, LVIF_TEXT, &nmlvdi.item.pszText, &nmlvdi.item.cchTextMax,
1211 LVN_GETDISPINFOW, LVN_GETDISPINFOA, DONT_CONVERT_SEND | CONVERT_RECEIVE},
1212 {&nmlvdi, sizeof(nmlvdi), &nmlvdi.item.mask, LVIF_TEXT, &nmlvdi.item.pszText, &nmlvdi.item.cchTextMax,
1213 LVN_SETDISPINFOW, LVN_SETDISPINFOA, SET_NULL_IF_NO_MASK | CONVERT_SEND | CONVERT_RECEIVE},
1214 {&nmlvgit, sizeof(nmlvgit), NULL, 0, &nmlvgit.pszText, &nmlvgit.cchTextMax, LVN_GETINFOTIPW, LVN_GETINFOTIPA,
1215 CONVERT_SEND | CONVERT_RECEIVE},
1217 {&nmtbs, sizeof(nmtbs), NULL, 0, (WCHAR **)&nmtbs.tbButton.iString, NULL, TBN_SAVE, TBN_SAVE,
1218 DONT_CONVERT_SEND | DONT_CONVERT_RECEIVE},
1219 {&nmtbr, sizeof(nmtbr), NULL, 0, (WCHAR **)&nmtbr.tbButton.iString, NULL, TBN_RESTORE, TBN_RESTORE,
1220 DONT_CONVERT_SEND | DONT_CONVERT_RECEIVE},
1221 {&nmtbdi, sizeof(nmtbdi), &nmtbdi.dwMask, TBNF_TEXT, &nmtbdi.pszText, &nmtbdi.cchText, TBN_GETDISPINFOW,
1222 TBN_GETDISPINFOW, DONT_CONVERT_SEND | DONT_CONVERT_RECEIVE},
1223 {&nmtb, sizeof(nmtb), NULL, 0, &nmtb.pszText, &nmtb.cchText, TBN_GETBUTTONINFOW, TBN_GETBUTTONINFOA,
1224 SEND_EMPTY_IF_NULL | CONVERT_SEND | CONVERT_RECEIVE},
1225 {&nmtbgit, sizeof(nmtbgit), NULL, 0, &nmtbgit.pszText, &nmtbgit.cchTextMax, TBN_GETINFOTIPW, TBN_GETINFOTIPA,
1226 DONT_CONVERT_SEND | CONVERT_RECEIVE},
1228 {&nmtvdi, sizeof(nmtvdi), &nmtvdi.item.mask, TVIF_TEXT, &nmtvdi.item.pszText, &nmtvdi.item.cchTextMax,
1229 TVN_BEGINLABELEDITW, TVN_BEGINLABELEDITA, SET_NULL_IF_NO_MASK | CONVERT_SEND | CONVERT_RECEIVE},
1230 {&nmtvdi, sizeof(nmtvdi), &nmtvdi.item.mask, TVIF_TEXT, &nmtvdi.item.pszText, &nmtvdi.item.cchTextMax,
1231 TVN_ENDLABELEDITW, TVN_ENDLABELEDITA, SET_NULL_IF_NO_MASK | CONVERT_SEND | CONVERT_RECEIVE},
1232 {&nmtvdi, sizeof(nmtvdi), &nmtvdi.item.mask, TVIF_TEXT, &nmtvdi.item.pszText, &nmtvdi.item.cchTextMax,
1233 TVN_GETDISPINFOW, TVN_GETDISPINFOA, ZERO_SEND | DONT_CONVERT_SEND| CONVERT_RECEIVE},
1234 {&nmtvdi, sizeof(nmtvdi), &nmtvdi.item.mask, TVIF_TEXT, &nmtvdi.item.pszText, &nmtvdi.item.cchTextMax,
1235 TVN_SETDISPINFOW, TVN_SETDISPINFOA, SET_NULL_IF_NO_MASK | CONVERT_SEND | CONVERT_RECEIVE},
1236 {&nmtvgit, sizeof(nmtvgit), NULL, 0, &nmtvgit.pszText, &nmtvgit.cchTextMax, TVN_GETINFOTIPW, TVN_GETINFOTIPA,
1237 DONT_CONVERT_SEND | CONVERT_RECEIVE},
1238 {&nmtv, sizeof(nmtv), &nmtv.itemNew.mask, TVIF_TEXT, &nmtv.itemNew.pszText, &nmtv.itemNew.cchTextMax,
1239 TVN_SINGLEEXPAND, TVN_SINGLEEXPAND, DONT_CONVERT_SEND | DONT_CONVERT_RECEIVE, TVITEM_NEW_HANDLER},
1240 {&nmtv, sizeof(nmtv), &nmtv.itemOld.mask, TVIF_TEXT, &nmtv.itemOld.pszText, &nmtv.itemOld.cchTextMax,
1241 TVN_SINGLEEXPAND, TVN_SINGLEEXPAND, DONT_CONVERT_SEND | DONT_CONVERT_RECEIVE, TVITEM_OLD_HANDLER},
1242 {&nmtv, sizeof(nmtv), &nmtv.itemNew.mask, TVIF_TEXT, &nmtv.itemNew.pszText, &nmtv.itemNew.cchTextMax,
1243 TVN_BEGINDRAGW, TVN_BEGINDRAGA, CONVERT_SEND, TVITEM_NEW_HANDLER},
1244 {&nmtv, sizeof(nmtv), &nmtv.itemOld.mask, TVIF_TEXT, &nmtv.itemOld.pszText, &nmtv.itemOld.cchTextMax,
1245 TVN_BEGINDRAGW, TVN_BEGINDRAGA, DONT_CONVERT_SEND, TVITEM_OLD_HANDLER},
1246 {&nmtv, sizeof(nmtv), &nmtv.itemNew.mask, TVIF_TEXT, &nmtv.itemNew.pszText, &nmtv.itemNew.cchTextMax,
1247 TVN_BEGINRDRAGW, TVN_BEGINRDRAGA, CONVERT_SEND, TVITEM_NEW_HANDLER},
1248 {&nmtv, sizeof(nmtv), &nmtv.itemOld.mask, TVIF_TEXT, &nmtv.itemOld.pszText, &nmtv.itemOld.cchTextMax,
1249 TVN_BEGINRDRAGW, TVN_BEGINRDRAGA, DONT_CONVERT_SEND, TVITEM_OLD_HANDLER},
1250 {&nmtv, sizeof(nmtv), &nmtv.itemNew.mask, TVIF_TEXT, &nmtv.itemNew.pszText, &nmtv.itemNew.cchTextMax,
1251 TVN_ITEMEXPANDEDW, TVN_ITEMEXPANDEDA, CONVERT_SEND, TVITEM_NEW_HANDLER},
1252 {&nmtv, sizeof(nmtv), &nmtv.itemOld.mask, TVIF_TEXT, &nmtv.itemOld.pszText, &nmtv.itemOld.cchTextMax,
1253 TVN_ITEMEXPANDEDW, TVN_ITEMEXPANDEDA, DONT_CONVERT_SEND, TVITEM_OLD_HANDLER},
1254 {&nmtv, sizeof(nmtv), &nmtv.itemNew.mask, TVIF_TEXT, &nmtv.itemNew.pszText, &nmtv.itemNew.cchTextMax,
1255 TVN_ITEMEXPANDINGW, TVN_ITEMEXPANDINGA, CONVERT_SEND, TVITEM_NEW_HANDLER},
1256 {&nmtv, sizeof(nmtv), &nmtv.itemOld.mask, TVIF_TEXT, &nmtv.itemOld.pszText, &nmtv.itemOld.cchTextMax,
1257 TVN_ITEMEXPANDINGW, TVN_ITEMEXPANDINGA, DONT_CONVERT_SEND, TVITEM_OLD_HANDLER},
1258 {&nmtv, sizeof(nmtv), &nmtv.itemNew.mask, TVIF_TEXT, &nmtv.itemNew.pszText, &nmtv.itemNew.cchTextMax,
1259 TVN_DELETEITEMW, TVN_DELETEITEMA, DONT_CONVERT_SEND, TVITEM_NEW_HANDLER},
1260 {&nmtv, sizeof(nmtv), &nmtv.itemOld.mask, TVIF_TEXT, &nmtv.itemOld.pszText, &nmtv.itemOld.cchTextMax,
1261 TVN_DELETEITEMW, TVN_DELETEITEMA, CONVERT_SEND, TVITEM_OLD_HANDLER},
1262 {&nmtv, sizeof(nmtv), &nmtv.itemNew.mask, TVIF_TEXT, &nmtv.itemNew.pszText, &nmtv.itemNew.cchTextMax,
1263 TVN_SELCHANGINGW, TVN_SELCHANGINGA, CONVERT_SEND, TVITEM_NEW_HANDLER},
1264 {&nmtv, sizeof(nmtv), &nmtv.itemOld.mask, TVIF_TEXT, &nmtv.itemOld.pszText, &nmtv.itemOld.cchTextMax,
1265 TVN_SELCHANGINGW, TVN_SELCHANGINGA, CONVERT_SEND, TVITEM_OLD_HANDLER},
1266 {&nmtv, sizeof(nmtv), &nmtv.itemNew.mask, TVIF_TEXT, &nmtv.itemNew.pszText, &nmtv.itemNew.cchTextMax,
1267 TVN_SELCHANGEDW, TVN_SELCHANGEDA, CONVERT_SEND, TVITEM_NEW_HANDLER},
1268 {&nmtv, sizeof(nmtv), &nmtv.itemOld.mask, TVIF_TEXT, &nmtv.itemOld.pszText, &nmtv.itemOld.cchTextMax,
1269 TVN_SELCHANGEDW, TVN_SELCHANGEDA, CONVERT_SEND, TVITEM_OLD_HANDLER}
1274 bret = register_test_notify_class();
1277 parent = CreateWindowA(class, "parent", WS_OVERLAPPED, 0, 0, 100, 100, 0, 0, GetModuleHandleA(0), 0);
1279 pager = CreateWindowA(WC_PAGESCROLLERA, "pager
", WS_CHILD, 0, 0, 100, 100, parent, 0, GetModuleHandleA(0), 0);
1281 child1_wnd = CreateWindowA(class, "child", WS_CHILD, 0, 0, 100, 100, pager, (HMENU)1, GetModuleHandleA(0), 0);
1283 SendMessageW(pager, PGM_SETCHILD, 0, (LPARAM)child1_wnd);
1285 for (i = 0; i < ARRAY_SIZE(paras); i++)
1286 test_notify_generic_text_helper(pager, paras + i);
1288 /* Tests for those that can't be covered by generic text test helper */
1289 test_wm_notify_comboboxex(pager);
1290 test_wm_notify_datetime(pager);
1291 test_wm_notify_header(pager);
1292 test_wm_notify_tooltip(pager);
1294 DestroyWindow(parent);
1295 UnregisterClassA(class, GetModuleHandleA(NULL));
1298static void init_functions(void)
1300 HMODULE mod = LoadLibraryA("comctl32.dll
");
1302#define X(f) p##f = (void*)GetProcAddress(mod, #f);
1303 X(InitCommonControlsEx);
1306 pSetWindowSubclass = (void*)GetProcAddress(mod, (LPSTR)410);
1311 INITCOMMONCONTROLSEX iccex;
1315 iccex.dwSize = sizeof(iccex);
1316 iccex.dwICC = ICC_PAGESCROLLER_CLASS;
1317 pInitCommonControlsEx(&iccex);
1319 init_msg_sequences(sequences, NUM_MSG_SEQUENCES);
1321 parent_wnd = create_parent_window();
1325 test_wm_notifyformat();
1328 DestroyWindow(parent_wnd);
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static void * heap_alloc(size_t len)
static const char * wine_dbgstr_rect(const RECT *prc)
static void flush_sequences(struct msg_sequence **seq, int n)
static const struct pixel_format_desc formats[]
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
GLint GLint GLint GLint GLint x
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
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
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
static IHTMLWindow2 * window
static const struct access_res create[16]
unsigned __int3264 UINT_PTR
#define TVN_ENDLABELEDITA
#define HDN_ITEMDBLCLICKA
#define TVN_ITEMEXPANDINGA
#define TVN_BEGINLABELEDITA
#define HDN_OVERFLOWCLICK
#define HDN_ITEMSTATEICONCLICK
#define TVN_ITEMEXPANDEDA
#define LVN_INCREMENTALSEARCHA
#define HDN_ITEMCHANGINGA
#define LVN_BEGINLABELEDITA
#define CBEN_GETDISPINFOA
#define HDN_ITEMDBLCLICKW
#define HDN_ITEMCHANGINGW
#define LVN_ENDLABELEDITA
#define TBN_GETBUTTONINFOA
#define HDN_ENDFILTEREDIT
#define HDN_DIVIDERDBLCLICKW
#define HDN_DIVIDERDBLCLICKA
#define HDN_BEGINFILTEREDIT
static int receive_data(SOCKET sock, SecBuffer *buf)
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
char szText[CBEMAXSTRLEN]
WCHAR szText[CBEMAXSTRLEN]
char szText[CBEMAXSTRLEN]
WCHAR szText[CBEMAXSTRLEN]
const CHAR * write_pointer
DWORD WINAPI GetLastError(void)
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define SetWindowLongPtrA
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LONG WINAPI GetWindowLongA(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_WINDOWPOSCHANGING
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define IS_INTRESOURCE(i)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define GetWindowLongPtrA
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
#define WM_WINDOWPOSCHANGED
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)