Hi all, I'm trying to display something by extension, but I encountered a strange issue:
DisplayRunObject routine will not be called when object left visible frame from left/top border (I put a break point in this function and didn't hit it in this case). The strange part is, object displays as usual when leave from right/bottom edge.
Please check the gif that shows the issue (about 7mb, may take sometime to load):
Please login to see this picture.
Please login to see this picture.
Here follows the source code of the extension:
Please login to see this link.
I have check the OEFLAGS, here is the flags I'm now using. But the issue still happens even if I set it exactly the same as simple picture template in SDK.
#define OEFLAGS (OEFLAG_VALUES|OEFLAG_SCROLLINGINDEPENDANT|OEFLAG_NEVERKILL|OEFLAG_RUNBEFOREFADEIN|OEFLAG_MANUALSLEEP|OEFLAG_NEVERSLEEP|OEFLAG_SPRITES|OEFLAG_QUICKDISPLAY|OEFLAG_BACKSAVE|OEFLAG_MOVEMENTS)
#define OEPREFS (OEPREFS_SCROLLINGINDEPENDANT|OEPREFS_INKEFFECTS|OEPREFS_BACKSAVE|OEPREFS_BACKEFFECTS)
The different part from the simple picture template is, I didn't use GetRunObjectSurface routine, cause it won't handle shaders correctly when part of object is out of visible frame, I use BlitEx (pretty sure I'm running under D3D) in DisplayRunObject to draw to screen manually, and return REFLAG_DISPLAY in HandleRunObject routine when object's img is changed.
//rdPtr->Display is a flag to control display feature on/off, passed from edPtr->Display that get value from properties.
if ((rdPtr->Display) && (rdPtr->rc.rcChanged)) {
return REFLAG_DISPLAY;
}
else {
return 0;
}
I have been researching this for a week but didn't make any progress......