1. C++ / Говнокод #17123

    +53

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 17 Ноября 2014

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

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

    Ошибка компиляции комментария:
    1. Гости могут высказаться только в понедельник, среду, четверг или воскресение
    ava Где здесь C++, guest?!
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код