深度评测xcgui(二)

来源:互联网 发布:mac ntfs读写插件 免费 编辑:程序博客网 时间:2024/05/21 09:20

说起窗口这块内容,都是老掉牙的了,就那么几块,首先注册窗口类,然后创建窗口,之后是刷新并显示窗口,进入消息循环进行处理。不过这块有个疑问,其一就是sendmsg和postmsg的区别了

两者一个进队列,一个不进队列,换句话说就是一个异步投放,一个干等着处理结果。处于同一线程中,就是一个等待队列dispatchmsg处理,一个直接调用目标窗口的消息处理

。处于不同线程时,最好用postthreadmsg替换postmsg,而sendmsg发送消息到目标窗口所在线程的消息队列,而发送者线程等待,直到目标窗口处理完并返回为止。如果发送的消息码在WM_USER之下(非自定义消息)且消息参数中带有指针,那么PostMessage,SendNotifyMessage,SendMessageCallback这些异步消息发送函数将会调用失败。 最好不要用PostMessage发送带有指针参数的消息。

闲话少叙,还是看炫彩的表演吧。

首先对句柄的包装是比较全乎的

struct window_{object_ obj;int exType;HWND hwnd;HARRAY hArrayEle;HARRAY hArrayEleNC;

HELE hCapture;ele_ *pMoseTop;ele_* pFocus;ele_* pOldFocus;int userData;

int captionHeight;int borderLeft,borderRight,borderBottom,borderTop,minWidth,minHeight,roundSize;

SIZE iconSize;bool bTrackLeave;HELE hClose,hMax,hMin,hMenubar,hToolbar;

RECT rcOld;int xcStyle;bool bClickTimer,bMouseup,bMouseDown;

POINT ptDown,ptUp,ptDown2;scrollBar_* pbar;

int caretWidth,caretHeight;POINT ptCaret;HELE hCaretEle;bool bCaretShow,bCaretErase;

HBITMAP hCaretBitmap;COLORREF caretColor;HFONTX hFont;RECT rcDraw;

HDC hBkDc;DWORD captionColor;

COLORREF bkColor;HBITMAP hBitmap;SIZE sizeWnd;

draw_window_ drawWin;

int transparentFlag,alpha,color;

int chartletStyle,HIMAGE hImage_Client,himagtenc,himaecaption,hleft,hright,hbottom;

COLORREF stroke_clr1,stroke_clr2,inner_clr1,inner_clr2,HARRAY msg,ncmsg;

window_proc_ *pWndproc;HARRAY pgrids};

主框就是这么多内容了,其实还是规范窗口的布局和样式,另外对于回调的规范也比较可以。

xc在消息处理这块上是动态添加的,就是说如果一个要对框的某个消息进行处理的话,必须动态添加,此时就需要添加消息类型和消息的实体实现。而xc也对规范的

消息类型都进行了表述,意思就是可以提供个人自定义的消息处理添加到xc中。

相对来说,xc的处理还是比较合理的,不过就是有点松散,就是相当于给了一块动态画板,自己规划哪一块,行了,以后我在详聊窗口


0 0
原创粉丝点击