मैंने निष्पादन योग्य में कुछ .cur फ़ाइलें स्थिर रूप से जोड़ दी हैं। मैं उन्हें ठीक कर सकता हूँ;

wc.hCursor=LoadCursor(hInstance,MAKEINTRESOURCE(151)); //before registering window class
HCURSOR cursn=LoadCursor(hInstance,MAKEINTRESOURCE(151));
HCURSOR cibeam=LoadCursor(hInstance,MAKEINTRESOURCE(152));

फिर मैं कुछ खोज के बाद मिली इस विधि का उपयोग करता हूं;

SetClassLongPtr(GetDlgItem(hwnd,4),GCLP_HCURSOR,LONG_PTR(cursn)); //on a button
SetClassLongPtr(GetDlgItem(hwnd,21),GCLP_HCURSOR,LONG_PTR(cibeam)); //on an edit box

अब कस्टम कर्सर ठीक काम कर रहे हैं। लेकिन एक मुद्दा है। जब कर्सर नियंत्रणों के बीच अंतर को इंगित कर रहा होता है, तो यह डिफ़ॉल्ट IDC_ARROW यहां दिखाए गए अनुसार बदल जाता है। मैं इन अंतरालों को cursn का उपयोग कैसे कर सकता हूं?

0
user13947011 19 जुलाई 2020, 01:50

1 उत्तर

सबसे बढ़िया उत्तर

मुझे पता चला कि नियंत्रणों के बीच "अंतराल" को nonclient area कहा जाता है और इस तरह से कर्सर सेट करना;

case WM_SETCURSOR:
{
    if(LOWORD(lParam)!=HTCLIENT) //the opposite of the example documented on MSDN
    {
        SetCursor(cursn);
        return 1;
    }
    break;
}

यह गैर-मानक और अस्वीकृत हो सकता है लेकिन यह अभी भी अच्छा दिखता है।

0
user13947011user13947011 19 जुलाई 2020, 13:28