⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rdproc.c

📁 pgp soucecode pgp soucecode
💻 C
📖 第 1 页 / 共 2 页
字号:
		case WM_COMPAREITEM:
		{     
			COMPAREITEMSTRUCT *comp;
			PUSERKEYINFO pui1,pui2;   
			HWND hwndFrom;

			comp=(COMPAREITEMSTRUCT *)lParam;
			pui1=(PUSERKEYINFO)comp->itemData1;
			pui2=(PUSERKEYINFO)comp->itemData2; 
			hwndFrom=comp->hwndItem;

			return ListViewCompareProc((LPARAM)pui1,
				(LPARAM)pui2,
				(LPARAM)hwndFrom);  
		}
#endif

        case WM_SIZE:
        {
            ResizeEm(hdlg);
            break;
        }

#if !LISTBOX
        #define ptrNMHDR       ((LPNMHDR)lParam)
        #define ptrNM_LISTVIEW ((NM_LISTVIEW *)lParam)
        #define ptrTV_DISPINFO ((TV_DISPINFO *)lParam)


        case WM_NOTIFY:
        {
            switch (ptrNMHDR->code)
            {
                case LVN_BEGINDRAG: // Sent by ListView when user 
                {                    // wants to drag an item.
                    int dx,dy,left,bottom,result;
                    POINT pnt;
					PRECGBL prg;

					prg=(PRECGBL)GetWindowLong(hdlg,GWL_USERDATA);

                    prg->hwndDragFrom = ptrNMHDR->hwndFrom;

                    if(!ListView_GetSelectedCount(prg->hwndDragFrom))
                    {
                        break; //  Exit if not
                    }

                    result=ImageList_DragShowNolock(FALSE);

                    prg->hDragImage=
                        MakeDragImage(prg->hwndDragFrom,
                                      &left,&bottom);

                    SetCapture(hdlg);

                    pnt.x=((NM_LISTVIEW *)lParam)->ptAction.x;
                    pnt.y=((NM_LISTVIEW *)lParam)->ptAction.y;

                    dx=pnt.x-left;
                    dy=pnt.y-bottom;

                    result=ImageList_BeginDrag(prg->hDragImage,
                                               0,dx,dy);
    
                    MapWindowPoints(prg->hwndDragFrom,hdlg,
                        (LPPOINT)&pnt,(UINT)1);

                    ImageList_DragEnter(hdlg,pnt.x,pnt.y);

                    result=ImageList_DragShowNolock(TRUE);
    
                    prg->bDragging = TRUE;
                    break;
                }

                case LVN_COLUMNCLICK: // Sent by ListView when user 
                {                     // clicks header control
                    int *SortSub;
                    BOOL *SortAscending;
					PRECGBL prg;

					prg=(PRECGBL)GetWindowLong(hdlg,GWL_USERDATA);

                    if(ptrNMHDR->hwndFrom==prg->hwndRecipients)
                    {
                        SortSub=&(prg->RSortSub);
                        SortAscending=&(prg->RSortAscending);
                    }
                    else
                    {
                        SortSub=&(prg->USortSub);
                        SortAscending=&(prg->USortAscending);
                    }

                    if(*SortSub==ptrNM_LISTVIEW->iSubItem)
                    {
                        *SortAscending=!(*SortAscending);
                    }
                    else
                    {
                        *SortAscending=TRUE;
                        *SortSub=ptrNM_LISTVIEW->iSubItem;
                    }

                    SortEm(ptrNMHDR->hwndFrom);

                    break;
                }

            }// switch

            break;
        } // case

#endif // !LISTBOX

        case WM_SYSCOLORCHANGE:
        {
			PRECGBL prg;

			prg=(PRECGBL)GetWindowLong(hdlg,GWL_USERDATA);

            DeleteDrawElements(&(prg->ds));
            CreateDrawElements(prg->context,&(prg->ds));

            SendMessage(prg->hwndRecipients,
                WM_SYSCOLORCHANGE,0,0);
            SendMessage(prg->hwndUserIDs,
                WM_SYSCOLORCHANGE,0,0);
            break;
        }

        case WM_DRAWITEM: 
        {
            Main_OnDrawItem(hdlg,(LPDRAWITEMSTRUCT) lParam);
            return TRUE;
        }

        case WM_MEASUREITEM:
            Main_OnMeasureItem(hdlg,(LPMEASUREITEMSTRUCT) lParam);
            return TRUE;

        case WM_HELP: 
        {
			char szHelpFile[MAX_PATH+1];

            GetHelpDir(szHelpFile);

            WinHelp (((LPHELPINFO) lParam)->hItemHandle, szHelpFile, 
                  HELP_WM_HELP, (DWORD) (LPSTR) aIds); 
            break;
        }

		// Note, ListView's context are done through subclass
        case WM_CONTEXTMENU: 
		{
			char szHelpFile[MAX_PATH+1];

			GetHelpDir(szHelpFile);

			WinHelp ((HWND) wParam, szHelpFile, HELP_CONTEXTMENU, 
				(DWORD) (LPVOID) aIds); 
			break;
		}

                
#if !LISTBOX
          
        case WM_MOUSEMOVE:
        {
			PRECGBL prg;

			prg=(PRECGBL)GetWindowLong(hdlg,GWL_USERDATA);

            if (prg->bDragging)
            {
                int result;

                // drag the item to the current mouse position
                result=ImageList_DragMove(LOWORD(lParam),
                    HIWORD(lParam));
            }     
                        
            break;
        }

        case WM_LBUTTONUP:
        {
			PRECGBL prg;

			prg=(PRECGBL)GetWindowLong(hdlg,GWL_USERDATA);

            if (prg->bDragging)
            {
                HWND hwndTarget;            // window under mouse
                POINT pt;
                int result;

                // Release the mouse capture
                ReleaseCapture();
                // Clear the drag flag
                prg->bDragging = FALSE;
                result=ImageList_DragShowNolock(FALSE);
                ImageList_DragLeave(hdlg);
                ImageList_EndDrag();

                ImageList_Destroy(prg->hDragImage);

                pt.x = LOWORD(lParam);  // horizontal position of cursor 
                pt.y = HIWORD(lParam);  // vertical position of cursor

                ClientToScreen (hdlg, &pt);

                // First, check to see if there is a valid drop point.
                hwndTarget = WindowFromPoint( pt );

                // make sure everything is going in the right direction
                if(((hwndTarget == prg->hwndRecipients) ||
                    (hwndTarget == prg->hwndUserIDs)) 
                    && (hwndTarget != prg->hwndDragFrom))
                {
                    MoveListViewItems(prg->hwndRecipients,prg->hwndUserIDs,
                        prg->hwndDragFrom==prg->hwndRecipients);
                }

            }

            break;
        }

#endif // !LISTBOX

        case WM_COMMAND:
        {
            switch(wParam)
            {
                case IDOK:
                {
					PRECGBL prg;

					prg=(PRECGBL)GetWindowLong(hdlg,GWL_USERDATA);

					SaveOptionSettings(prg->hwndOptions);
                    EndDialog(hdlg, TRUE);
                    break;
                }

                case IDCANCEL:
                {
                    EndDialog(hdlg, FALSE);
                    break;
                }

                case IDHELP:
                {
                    char szHelpFile[MAX_PATH+1];

                    GetHelpDir(szHelpFile);

                    WinHelp (hdlg, szHelpFile, HELP_CONTEXT, 
                        IDH_IDD_RECIPIENTDLG); 
                    break;
                }

            }
            return TRUE;
        }

    }
    return FALSE;
}

/*__Editor_settings____

	Local Variables:
	tab-width: 4
	End:
	vi: ts=4 sw=4
	vim: si
_____________________*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -