自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 资源 (3)
  • 收藏
  • 关注

原创 自己写的GRID控件源码(源文件)

#include "stdafx.h"#include "common.h"#include "RRGrid.h"  //内部消息定义#define GM_LOAD_GRID      WM_GRID_USER_INNER + 1#define GM_SAVE_GRID     WM_GRID_USER_INNER+2#define GM_SET_EDIT_TEXT    WM_GRI

2007-08-28 19:49:00 1359 5

原创 自己写的GRID控件源码(头文件)

#ifndef _RRGRID_H_2007_08_22_#define _RRGRID_H_2007_08_22_//#include #define RR_GRIDCTRL_CLASS   "RRGridCtrl"//############################定义Grid的风格//GS_VISIBLE/GS_NO_COLHEAD/GS_NO_ROWHEAD创建时起作用

2007-08-28 19:46:00 920

原创 WMLScript虚拟机概要设计(简略版)

二.体系结构设计2.1系统概述    WAP终端请求的WMLScript文件,过WAP1.x网关后均被编译成高效的二进制字节码(指令)格式。本模块构建了一个解析、执行WMLScript字节码指令的虚拟机器,把字节码解析成具体平台上的机器指令执行, 在终端上通过软件仿真,实现字节码指令功能。本模块用来解析、执行WMLScript字节码,是实现WML浏览器的一部分。每一个WMLScript

2007-08-31 16:06:00 683

原创 VFS Flash管理系统

  前提Flash存储编程特点Flash写:由1变为0,变为0后,不能通过写再变为1。Flash擦除:由0变为1,不能按位擦除,必须将整个block一起擦除,把一个block或整个Flash的内容都变成1。 当在一个block中进行存储时,一旦对某一block中的某一位写0,再要改变成1,则必须先对整个block进行擦除,然后才能修改。 没有VFS之前的Flash数据存取方

2007-08-30 14:42:00 1170 2

原创 通用的双向链表(值得收藏)

头文件typedef struct tagListNode { struct tagListNode *pNext; struct tagListNode *pPrev;}ListNode;//遍历所有节点#define List_ForEach(pos,head) / for ((pos) = (head)->pNext; (pos) != (head); (pos) = (pos)->

2007-08-29 22:19:00 718 1

原创 自己写一个通用的MessageBox(SDK实现)

系统提供的MessageBox各按钮上的文本不便改变,但是在我们开发过程中,需要各种各样的提示,如果一律用Yes/No之类的提示,界面不太友好。比如按关闭按钮,弹出一个MessageBox提示"退出还是最小化?",用"退出","最小化" 两个按钮供用户作选择,就比用"是",“否”友好.我在网上看到很多人遇到这样需求的时候,是用对话框取代MessageBox,如果你的顶目够大,那需要这样提示的地

2007-08-26 14:35:00 1862 1

原创 SDK实现自动改变控件位置和大小的函数

刚才花了点时间,写了几个通用函数,实现对话框内控件的自动缩放.现在把源代码贴出来。数据结构定义1)定义链表结构来存放各子窗口的矩形typedef struct tagRectLinkNode{ HWND hChild; RECT rect; ListNode node; //这个用的是封装的链表结点结构}WndRectLinkNode_T;typedef struct tagRec

2007-08-23 15:31:00 1447 2

RRGrid控件源码

早些时间从网上下载了一个GRID控件源码,想花两天改改来用,但是那个外国人写得太粗糙了,结果就全部重写了.我留着也没用,把源码放上来,给有心的朋友借鉴.经常在网上下东西,这回也做点贡献. 这个是原来的链接:http://www.codeguru.com/Cpp/controls/controls/gridcontrol/article.php/c5277 有兴趣的朋友可以比照着借鉴一下<br>转载的话请注明出处,并知会我一声

2007-08-28

RRGRID

下午发的那个RRGrid有个地方的测试没有取消,会造成内存泄漏,再发一个<br><br>顺便把头文件发出来<br><br>#define RR_GRIDCTRL_CLASS "RRGridCtrl"<br><br>//############################定义Grid的风格<br>//GS_VISIBLE/GS_NO_COLHEAD/GS_NO_ROWHEAD创建时起作用<br>#define GS_VISIBLE 0x00000001L<br>#define GS_NO_COLHEAD 0x00000002L<br>#define GS_NO_ROWHEAD 0x00000004L<br><br><br>#define GS_READONLY 0x00001000L<br>//是否调整Grid高度,以显示完整的行高<br>#define GS_GRIDHIGH_NOADJUST 0x00002000L<br>//选择行是否可见(选择行高亮--可见)<br>#define GS_SELROW_INVISIBLE 0x00004000L<br><br>//是否使用Insert键插入行<br>#define GS_CANCEL_INSKEY 0x00010000L<br>//是否使用Delete键删除行<br>#define GS_CANCEL_DELKEY 0x00020000L<br>//是否在最后行被选择时按Enter键增加行<br>#define GS_CANCEL_ENTER_INSERT 0x00040000L<br><br>//是否拓展最后列到右边界<br>#define GS_LASTCOL_NOEXTEND 0x00100000L <br>//列宽是否可变<br>#define GS_COLUMN_NORESIZE 0x00200000L<br>//列头(第0行)是否显示ABCDE标识<br>#define GS_COLHEAD_CUSTOM 0x00400000L<br>//行头(第0列)是否显示12345标识<br>#define GS_ROWHEAD_CUSTOM 0x00800000L<br><br><br><br><br><br><br><br>//####################通知码(给父窗口发通知消息的通知码)<br><br>//进入编辑后发通知<br>#define GN_ENTRY_CELL_EDITBOX 0x0001<br><br><br>//退出编辑前发通知<br>//GridNotify_T返回值为非0,将不会退出本单元的编辑<br>#define GN_EXIT_CELL_EDITBOX 0x0002<br><br>//在行改变之前发出通知,如果GridNotify_T返回非0,将不会改变行<br>//如果是在编辑中,则不能进入新行编辑<br>#define GN_ROW_CHANGED 0x0003<br><br>//Grid由外部得到焦点<br>#define GN_GET_FOCUS 0x0004<br>//焦点从Grid里移到外部<br>#define GN_LOST_FOCUS 0x0005<br><br>//增加新行前发通知给父窗口<br>//GridNotify_T返回值为非0,将不完成本次操作<br>#define GN_INSERT_ROW 0x0006 <br><br>//删除行前发通知给父窗口<br>//GridNotify_T返回值为非0,将不完成本次操作<br>#define GN_DELETE_ROW 0x0007<br><br>//单击单元<br>//GridNotify_T返回值为非0,将不会进行默认操作<br>//默认操作:在编辑中,单击另一数据单元,将转到另一单元编辑;<br>//在编辑中,单击发生在数据单元外,将退出编辑<br>//在非编辑中,单击将使该行变成选择状态<br>#define GN_CLICK_CELL 0x0008<br><br>//双击单元<br>//GridNotify_T返回值为非0,将不会进行默认操作<br>//默认:非编辑时,在数据单元上双击将进入该单元编辑<br>#define GN_DCLICK_CELL 0x0009<br><br><br><br><br><br>//########################################自定义消息<br><br>#define WM_GRID_USER_INNER WM_USER<br><br>#define WM_GRID_USER_OUTER WM_USER+20<br><br>//WM_GRID_USER_OUTER+1 -- WM_GRID_USER_OUTER+19内部使用 <br><br>//Grid往父窗口发的通知消息<br>//wParam --通知码/控件id组成<br>//lParam --与父窗口进行信息交流的结构指针(GridNotify_T*)<br>#define GM_GRID_NOTIFY WM_GRID_USER_OUTER+1<br><br>//wParam -- TRUE -- 只读;FALSE --可编辑;lParam -- 未用<br>#define GM_GRID_SET_READONLY WM_GRID_USER_OUTER + 2<br><br>//设置列宽是否允许变化wParam: 0--不允许 1--允许;lParam:未用<br>#define GM_GRID_ALLOW_COL_RESIZE WM_GRID_USER_OUTER + 3<br><br>//清除Grid所有单元文本<br>//wParam /lParam -- 未用<br>#define GM_GRID_CLEAR_TEXT WM_GRID_USER_OUTER + 4<br><br>//返回值不包括第0行<br>#define GM_GRID_GET_ROWS WM_GRID_USER_OUTER + 5<br><br>//返回值不包括第0列<br>#define GM_GRID_GET_COLS WM_GRID_USER_OUTER + 6<br><br>//GM_GRID_SET_CELL_COUNT (重置Grid行列数)<br>//重置单元行列数,Grid现有数据将丢失<br>//wParam -- 行数 lParam -- 列数(这两个数值不包括0行/0列)<br>#define GM_GRID_SET_CELL_COUNT WM_GRID_USER_OUTER +7<br><br><br>//增加新行wParam -- 新行号(不能插入第0行)<br>#define GM_GRID_INSERT_ROW WM_GRID_USER_OUTER+8<br><br>//删除行(不能删除第0行,要删除/显示第0行/第0列,可将其相应宽高置为0)<br>//(要删除标题行可将标题文本重置为"\0")<br>#define GM_GRID_DELETE_ROW WM_GRID_USER_OUTER+9<br><br>#define GM_GRID_GET_STYLE WM_GRID_USER_OUTER+10<br><br>//设置GRID 风格,wParam -- 风格<br>#define GM_GRID_SET_STYLE WM_GRID_USER_OUTER+11 <br><br>//进入指定单元编辑<br>//慎用,避免死循环(系统本身已提供了一套编辑/退出编辑机制)<br>//若在GN_CLICK_CELL/GN_DCLICK_CELL通知响应中取消了默认操作,可以尝试使用<br>#define GM_GRID_ENTRY_EDITBOX WM_GRID_USER_OUTER+12 <br><br><br><br>//退出单元编辑<br>//慎用,避免死循环(系统本身已提供了一套编辑/退出编辑机制)<br>//若在GN_CLICK_CELL/GN_DCLICK_CELL通知响应中取消了默认操作,可以尝试使用<br>#define GM_GRID_EXIT_EDITBOX WM_GRID_USER_OUTER+13 <br><br><br>//wParam -- 单元(GridCell_T类型指针) ;lParam --文本字符串<br>#define GM_SET_CELL_TEXT WM_GRID_USER_OUTER + 21 //或RR_GridCtrl_SetCellText<br><br>//wParam -- 单元(GridCell_T类型指针) ;<br>//lParam --缓存区,为避免数据溢出,需先调用GM_GET_CELL_TEXT_LEN得到数据长度以设置缓存区<br>#define GM_GET_CELL_TEXT WM_GRID_USER_OUTER + 22 //或RR_GridCtrl_GetCellText<br><br>//发送GM_GET_CELL_TEXT之前调用,得到数据长度来设置缓冲区<br>//缓存区最小大小需在该消息返回值基础上+1('\0')<br>//wParam -- GridCell_T类型指针;lParam -- 未用<br>#define GM_GET_CELL_TEXT_LEN WM_GRID_USER_OUTER+23<br><br>//wParam --列号(从0开始,0--对应第0列)<br>#define GM_GET_COL_WIDTH WM_GRID_USER_OUTER + 24<br><br>//返回行高:wParam/lParam 未用<br>#define GM_GET_ROW_HEIGHT WM_GRID_USER_OUTER + 25<br><br>//返回第0行高度:wParam/lParam 未用<br>#define GM_GET_HEADERROW_HEIGHT WM_GRID_USER_OUTER + 26<br> <br>//返回当前选择的行号:wParam/lParam 未用<br>#define GM_GET_SELECT_ROW WM_GRID_USER_OUTER + 27<br><br>//wParam --新高度(如果<=0,则没有第0行)<br>#define GM_SET_HEADER_ROW_HEIGHT WM_GRID_USER_OUTER + 28<br><br>//wParam --新高度<br>#define GM_SET_ROW_HEIGHT WM_GRID_USER_OUTER + 29<br><br>//wParam -- 列号lParam 新宽度<br>#define GM_SET_COL_WIDTH WM_GRID_USER_OUTER + 30<br><br><br>//得到当前编辑状态:返回TRUE -- 正在编辑;FALSE --非编辑状态;<br>//wParam :未使用<br>//lParam : GridCell_T指针,返回当前正在编辑的单元<br>#define GM_GET_EDIT_STATUS WM_GRID_USER_OUTER+31<br><br><br>//设置栅格线颜色wParam -- RGB值(COLORREF)<br>#define GM_SET_GRID_LINE_COLOR WM_GRID_USER_OUTER + 32<br><br>//设置选择行在Grid没有焦点时前景色和背景色<br>//wParam -- 前景色,lParam -- 背景色<br>#define GM_SET_NOFOCUS_SELLINE_COLOR WM_GRID_USER_OUTER + 33<br><br>//设置选择行在Grid有焦点时前景色和背景色<br>#define GM_SET_FOCUS_SELLINE_COLOR WM_GRID_USER_OUTER + 34<br><br>//设置当Grid只读时的前景色和背景色<br>#define GM_SET_READONLY_COLOR WM_GRID_USER_OUTER + 35<br><br>//设置Grid背景色和前景色<br>#define GM_SET_GRID_COLOR WM_GRID_USER_OUTER + 36 <br><br>#define GM_SET_TITLE_FONT WM_GRID_USER_OUTER + 37<br><br>#define GM_SET_HEADING_FONT WM_GRID_USER_OUTER + 38<br><br>#define GM_SET_BODY_FONT WM_GRID_USER_OUTER + 39 <br><br><br>//得到GRID修改标志<br>//返回值0 --未被修改,非0--被修改<br>#define GM_GET_GRID_MODIFY WM_GRID_USER_OUTER + 40<br><br>//设置GRID内容修改标志:lParam --值<br>#define GM_SET_GRID_MODIFY WM_GRID_USER_OUTER + 41 <br><br>//得到行修改标志:wParam --行号<br>//可以在GN_ROW_CHANGED通知中获得该标志<br>#define GM_GET_ROW_MODIFY WM_GRID_USER_OUTER + 42<br><br>//设置行修改标志:wParam--行号;lParam --值<br>#define GM_SET_ROW_MODIFY WM_GRID_USER_OUTER + 43<br><br>//得到单元修改标志:wParam -- GridCell_T指针<br>//退出编辑之后该标志是无效的<br>//可以在GN_EXIT_CELL_EDITBOX通知中获得该标志<br>#define GM_GET_CELL_MODIFY WM_GRID_USER_OUTER + 44<br><br>//设置单元修改标志 :wParam -- GridCell_T指针;lParam --值<br>#define GM_SET_CELL_MODIFY WM_GRID_USER_OUTER + 45<br><br><br>typedef struct _tagGridCell <br>{<br> int row;<br> int col;<br>}GridCell_T;<br><br>typedef struct _tagGridNotifyStruct<br>{<br> HWND hwndFrom;//Window handle to the control sending a message<br> UINT idFrom;//Identifier of the control sending a message. <br> UINT code;//Notification code<br> LPARAM param;<br> <br> /*父窗口消息响应中的返回值(用这个变量返回值比直接<br> 用SendMessage返回值可靠,检测到该值未被改变,这可能是<br> 父窗口没有响应该消息或消息响应有意保持Grid后续的默<br> 认处理,但消息返回后Grid都可以放心地按默认处理)*/<br> int retVal;<br> <br> <br>}GridNotify_T;<br><br>extern "C"_declspec(dllimport)<br>BOOL RR_GridCtrl_Register(HINSTANCE); <br><br>extern "C"_declspec(dllimport)<br>BOOL RR_GridCtrl_Register(HINSTANCE);<br><br>extern "C"_declspec(dllimport)<br>void RR_GridCtrl_SetCell(GridCell_T *cell,int row, int col);<br><br>//比较两个单元,行列号相等返回TRUE,否则返回FALSE<br>extern "C"_declspec(dllimport)<br>BOOL RR_GridCtrl_CmpCell(const GridCell_T *pCell1,const GridCell_T *pCell2);<br><br>extern "C"_declspec(dllimport)<br>BOOL RR_GridCtrl_GetCellText(HWND hGrid,int row ,int col ,char *pszBuf,int buf_size);<br><br>extern "C"_declspec(dllimport)<br>BOOL RR_GridCtrl_SetCellText(HWND hGrid,int row ,int col ,char *pszText);<br><br>extern "C"_declspec(dllimport)<br>HWND RR_Create_GridCtrl(DWORD dwStyle,HWND hWndParent,RECT *pGridRect, int nId,char szGridTitle[],int rows,int cols);<br><br>extern "C"_declspec(dllimport)<br>BOOL RR_Load_GridCtrl(char szFile[],HWND hGrid);<br><br>extern "C"_declspec(dllimport)<br>BOOL RR_Save_GridCtrl(char szFile[],HWND hGrid);<br><br>extern "C"_declspec(dllimport)<br>HWND RR_GetDlgGridItem(HWND hDlg,int id);<br><br>

2007-08-22

RRGRID

VC SDK 写的DataGrid控件,无需使用数据库(当然你也可以将数据读出来传到数据库中)<br>支持可变列宽,列头行头自定义,行插入、删除,进入单元编辑/退出单元编辑/改变选择行/行插入/行删除等各类通知事件,支持单元修改标志,行修改标志,控件修改标志;风格/颜色/字体自定义;响应鼠标单击双击事件进行编辑风格自定义...<br><br>有问题或需求可以给我发邮件,有时间的情况下,我会考虑帮大家实现

2007-08-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除