Кресты / Говнокод #17123 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
int CALLBACK ZDll::Compare(ZDll* p, ZDll* q, LPARAM lParamSort)
{
	ULONG_PTR a, b;
	int s = GET_Y_LPARAM(lParamSort) ? -1 : +1;
	
	switch (GET_X_LPARAM(lParamSort))
	{
	default: __assume(false);
	case 0:
		a = p->_index, b = q->_index;
		break;
	
	case 1:
		a = (ULONG_PTR)p->_BaseOfDll, b = (ULONG_PTR)q->_BaseOfDll;
		break;

	case 2:
		a = p->_SizeOfImage, b = q->_SizeOfImage;
		break;

	case 3:
		PCWSTR pa = p->_ImageName, pb = q->_ImageName;
		if (!pa) return -s;
		if (!pb) return +s;
		return _wcsicmp(pa, pb)*s;
	}

	if (a < b) return -s;
	if (a > b) return +s;
	return 0;
}

INT_PTR ZModulesDlg::DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_NOTIFY:
		if (((LPNMHDR)lParam)->idFrom == IDC_LIST1)
		{
			LVITEM lvi;

			switch (((LPNMHDR)lParam)->code)
			{
			case LVN_COLUMNCLICK:
				if ((DWORD)(lvi.iSubItem = ((LPNMLISTVIEW)lParam)->iSubItem) < 4)
				{
					ListView_SortItems(((LPNMHDR)lParam)->hwndFrom, ZDll::Compare, 
						MAKELPARAM(lvi.iSubItem, _bittestandcomplement(&_SortOrder, lvi.iSubItem)));
				}
				break;

			case LVN_GETINFOTIP:
				lvi.iItem = ((LPNMLVGETINFOTIP)lParam)->iItem;
				lvi.mask = LVIF_PARAM;

				if (ListView_GetItem(((LPNMHDR)lParam)->hwndFrom, &lvi))
				{
					if (PWSTR ImagePath = ((ZDll*)lvi.lParam)->_ImagePath)
					{
						if (DWORD n = ((LPNMLVGETINFOTIP)lParam)->cchTextMax)
						{
							WCHAR *pszText = ((LPNMLVGETINFOTIP)lParam)->pszText, c;
							do 
							{
								*pszText++ = c = *ImagePath++;
							} while (c && --n);

							if (c)
							{
								pszText[-1] = 0;
							}
						}
					}
				}
				break;
			}
		}
		break;

жесть

Запостил: zhukas zhukas, (Updated )

Комментарии (0) RSS

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8