實現button控制項,其他控制項類此寫便是了。
按鈕控制項
#ifndef __button_h__
#define __button_h__
#include "widget.h"
typedef void (*buttononclickedfunc)(void* param1, void* param2);
typedef enum _buttonstyle
buttonstyle;
/* * 函式名:button_create
* 說明:建立按鈕
* 引數說明:
*/widget* button_create(int id, rect rect, int* layer, char* text);
/* * 函式名:button_set_on_clicked_func
* 說明:設定按鈕單擊時間處理函式
* 引數說明:
*/void button_set_on_clicked_func(widget* thiz, buttononclickedfunc on_clicked, void* param1, void* param2);
/* * 函式名:button_set_font_size
* 說明:設定文字字型大小
* 引數說明:
*/void button_set_font_size(widget* thiz, font_size_t size);
/* * 函式名:button_set_style
* 說明:設定按鈕風格
* 引數說明:
*/void button_set_style(widget* thiz, buttonstyle style);
/* * 函式名:button_set_text
* 說明:設定按鈕文字
* 引數說明:
*/void button_set_text(widget* thiz, char* text);
#endif /*__button_h__*/
按鈕控制項自有的介面實現
#include "button.h"
struct _buttonextra;
typedef struct _buttonextra buttonextra;
#define button_max_text 0x20
typedef enum _buttonstate
buttonstate;
struct _buttonextra
;static int button_on_key_event(widget* thiz, int event, int keycode)
}else if(vm_key_event_up == event)
}return true;
}static int button_on_pen_event(widget* thiz, int event, int x, int y)
else if(button_pushdown == extra->state && vm_pen_event_release == event)
return true;
}static int button_on_paint(widget* thiz)
; vmint wstr_width, wstr_height;
vmint x_pos = widget_get_x_pos_abs(thiz);
vmint y_pos = widget_get_y_pos_abs(thiz);
vmint height = widget_get_height(thiz);
vmint width = widget_get_width(thiz);
int* layer = widget_get_layer(thiz);
int layer_hd = layer[widget_get_layer_index(thiz)];
vm_graphic_color start_color;
vm_graphic_color end_color;
vm_graphic_color color;
if(null == thiz || !widget_is_visible(thiz) || null == thiz->extra)
return false;
extra = (buttonextra*)thiz->extra;
vm_graphic_set_font(extra->fone_size);
vm_gb2312_to_ucs2(button_name, button_max_text, extra->text);
wstr_width = vm_graphic_get_string_width(button_name);
wstr_height = vm_graphic_get_string_height(button_name);
if(buttonstyle1 == extra->style)
else if(button_pushdown == extra->state)
color.vm_color_565 = vm_color_black;
vm_graphic_setcolor(&color);
vm_graphic_gradient_paint_rect(layer_hd, x_pos + 1, y_pos + 1, x_pos + width - 2, y_pos + height - 2, start_color, end_color, vm_gdi_gp_ver);
vm_graphic_roundrect_ex(layer_hd, x_pos, y_pos, width, height, 5);
vm_graphic_textout_to_layer(layer_hd, x_pos + width/2 - wstr_width/2 - 4, y_pos + height/2 - wstr_height/2 - 3, button_name, vm_wstrlen(button_name));
}else if(buttonstyle2 == extra->style)
vm_graphic_set_font(vm_medium_font);
return true;
}static int button_on_destroy(widget* thiz)
void button_set_on_clicked_func(widget* thiz, buttononclickedfunc on_clicked, void* param1, void* param2)
void button_set_font_size(widget* thiz, font_size_t size)
void button_set_style(widget* thiz, buttonstyle style)
void button_set_text(widget* thiz, char* text)
widget* button_create(int id, rect rect, int* layer, char* text)
MySQL的ADO控制項 實現ADO控制項引用的方法
關係型資料庫系統中的表由行和列組成,這有些類似於excel二維 的樣子。由於excel並不是關係型資料庫管理系統,在使用vba對關係型資料庫進行訪問時,需要通過設定ado來訪問關係型資料庫系統。本文介紹向工程中新增ado引用的方法。1 啟動excel並建立文件,開啟visual basic編輯器,選...
c 實現的ActiveX控制項
雖然應用範圍有限,但也算是一種嘗試吧。using system.runtime.interopservices namespace actwsz classinte ce classinte cetype.autodual public class acttest iact public strin...
實現DataList控制項的分頁
實現datalist控制項的分頁 datalist控制項功能很強大,他支援選擇 編輯,實現的方法也很簡單,不過最令人頭疼的就是它不像datagrid控制項一樣內建了分頁的功能,這麼好的乙個控制項竟然不能分頁!確實是乙個很讓人頭疼的事情。不過,只是datalist沒有提供內建的分頁功能,但是並不表示,...