SDK数据库系统+radiobutton+listview
来源:互联网 发布:知乐作品合集网盘下载 编辑:程序博客网 时间:2024/04/30 10:18
这几天老师要我们完成一个数据库系统的综合实验,趁机把ODBC 的知识给补补,同时也把各种控件实现一下,主要有radiobutton,listview。这篇文章存在许多不足,希望各位多多指教。
编译界面如下:
数据库连接
在数据库中建立一个表,来存储用户信息,用ODBC连接数据库,在通过SQL 语言实现查找表中是否有用户信息,如果有及登录成功,反之失败。在此过程中也遇到了一些麻烦,wsprintf(sql,"update name1 set name1.Fsex='%s' ,name1.Fage=%s,name1.Fname='%s'",str1,str2,str3,str); result =SQLPrepare(hstmt(SQLCHAR*)sql,SQL_NTS);在实现上面语句时由于没有加name这个表名(由于在数据库中不止一个表,不同的表中都有Fname,所以必须用,name1.Fage才能实现对数据库的更新),同时在定义的char类型前必须加上分号。所以在细节方面,要多加注意,脚踏实地的做好一件事。
radiobutton
在实现radiobutton的时候,需要自己封装一个函数(其实MCF都是由微软封装起来的函数)一下有一个封装函数 GetCheckRadioButton(HWND hwnd,int firstId,int lastId),他的作用是判断radiobutton是否选中,如果选中即返回对应radiobutton的值,函数封装如下:
int GetCheckRadioButton(HWND hwnd,int firstId,int lastId)
{
int i;
for(i=firstId;i<=lastId;i++)
{
UINT iChecked=IsDlgButtonChecked(hwnd,i);
if(iChecked==BST_CHECKED)
{
return i;
}
}
return -1;
}
同时实现radiobutton不能仅仅依靠GetCheckRadioButton(HWND hwnd,int firstId,int lastId)函数,还要用一下函数实现其功能。
case IDC_RADIO1:
case IDC_RADIO2:
CheckRadioButton(hwnd, IDC_RADIO1, IDC_RADIO2,id);
case IDC_OK:
{
int id;
id=GetCheckRadioButton(hwnd,IDC_RADIO1,IDC_RADIO2);
if(id==IDC_RADIO1)
{
}
ListView
实现ListView之前必须做好准备工作,要加载其头文件#include<CommCtrl.h>,以及其对应的库comctl32.lib,首先在对话框DLG的初始化时加载其代码
BOOL loginDlg2_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
HWND hwnd1 = GetDlgItem(hwnd,IDC_LIST1);//获得句柄
DWORD dwExStyle =
LVS_EX_CHECKBOXES|//设置listView可复选
LVS_EX_FLATSB|//设置滚动条
LVS_EX_FULLROWSELECT | //设置可选整行
LVS_EX_GRIDLINES | //listView的item的每个栏目之间添加分割线
LVS_EX_HEADERDRAGDROP |//允许litview的目录通过拖放重排序
// LVS_EX_ONECLICKACTIVATE| //当用户点击item时,向parent window发生消息,而且当光标从item上移过时,item背景发生变化
// LVS_EX_TWOCLICKACTIVATE| //当用户双击item时,向parent window发生消息,而且当光标从item上移过时,item背景发生变化,但当添加此参数,item项不能编辑
// LVS_EX_TRACKSELECT |//当光标在某个项上停留一段时间就选中此项
// LVS_EX_UNDERLINECOLD |//此参数只要设置了LVS_EX_ONECLICKACTIVATE才起作用,每项下面都有下划线,当鼠标移到某项时下划线去掉,并且字体颜色变化
// LVS_EX_UNDERLINEHOT | //此参数只要设置了LVS_EX_ONECLICKACTIVATE才起作用,与LVS_EX_UNDERLINECOLD相反,当鼠标移到某项时,出现下划线
LVS_EDITLABELS
// LVS_EX_REGIONAL| //仅当listview的style为LVS_ICON 时才起作用
// LVS_EX_INFOTIP | //仅当listview的style为LVS_ICON 时才起作用
// LVS_EX_MULTIWORKAREAS | // 未知
// LVS_EX_SUBITEMIMAGES|//未知
;
// SendMessage(hwndListView,LVM_SETEXTENDEDLISTVIEWSTYLE,0,dwExStyle);
//或者用下面的语句
ListView_SetExtendedListViewStyle(hwnd1,dwExStyle);//设置Listview的风格
ListView_SetTextBkColor(hwnd1,RGB(230,240,250));//设置列表框背景色。
ListView_SetTextColor(hwnd1,RGB(12,12,12));//字体颜色。
//SendDlgItemMessage(hwnd, IDC_LIST1, LVM_INSERTITEM, 0, (LPARAM)&lvItem);
LVCOLUMNW lvc;
lvc.mask = LVCF_TEXT| LVCF_WIDTH |LVCF_SUBITEM;
lvc.cchTextMax =20;//字宽。
lvc.pszText = TEXT("学号");
lvc.cx = 100 ;
SendMessage(hwnd1, LVM_INSERTCOLUMN,0,(LPARAM)&lvc);
lvc.pszText = TEXT("姓名");
lvc.cx = 100;
SendMessage(hwnd1, LVM_INSERTCOLUMN,1,(LPARAM)&lvc);
lvc.pszText = TEXT("性别");
lvc.cx = 100;
SendMessage(hwnd1, LVM_INSERTCOLUMN,2,(LPARAM)&lvc);
lvc.pszText = TEXT("年龄");
lvc.cx = 100;
SendMessage(hwnd1, LVM_INSERTCOLUMN,3,(LPARAM)&lvc);
lvc.pszText = TEXT("系别");
lvc.cx = 100;
SendMessage(hwnd1, LVM_INSERTCOLUMN,4,(LPARAM)&lvc);
LV_ITEM lvi;
SendDlgItemMessage(hwnd,IDC_LIST1,LVM_GETITEMCOUNT,0,0);
lvi.mask = LVIF_TEXT;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.pszText =TEXT("101");
SendDlgItemMessage(hwnd,IDC_LIST1,LVM_INSERTITEM,0,(LPARAM)&lvi);
lvi.iSubItem =1;
lvi.pszText = TEXT("欧阳");
SendDlgItemMessage(hwnd,IDC_LIST1,LVM_SETITEM,0,(LPARAM)&lvi);
lvi.iSubItem =2;
lvi.pszText = TEXT("男");
SendDlgItemMessage(hwnd,IDC_LIST1,LVM_SETITEM,0,(LPARAM)&lvi);
lvi.iSubItem =3;
lvi.pszText = TEXT("21");
SendDlgItemMessage(hwnd,IDC_LIST1,LVM_SETITEM,0,(LPARAM)&lvi);
lvi.iSubItem =4;
lvi.pszText = TEXT("计算机");
SendDlgItemMessage(hwnd,IDC_LIST1,LVM_SETITEM,0,(LPARAM)&lvi);
return TRUE;
}
在此过程中我遇到了许多问题,例如把数据插入Listvew时,只能插入第一行和第一列,错误就在我们没注意Listvew的风格,在添加行与列时,比较不同,首先,SendDlgItemMessage(hwnd,IDC_LIST1,LVM_GETITEMCOUNT,0,0);要注意LVM_GETITEMCOUNT这消息,由于添加行与列时,发送的消息不一样。再次注意:SendDlgItemMessage(hwndListView,IDC_LIST1,LVM_INSERTITEM,0,(LPARAM)&lvi);与SendDlgItemMessage(hwndListView,IDC_LIST1,LVM_SETITEM,0,(LPARAM)&lvi);*/的不同之处。
在期间也遇到了结构体的问题,如定义列时,有的用LV-COLUMN,有的用LVCOLUMNW,这要适情况而定,如果不行直接把结构体定义在自己的loginDlg2.h中。
- SDK数据库系统+radiobutton+listview
- ListView & RadioButton
- listview添加radiobutton
- RadioButton listView实现
- listView嵌套radiobutton
- radiobutton在listview中处理
- ListView中嵌套RadioButton按钮
- Listview+RadioButton实现单选
- android-------listview 实现radiobutton 单选
- listview中radiobutton的选择问题
- 巧用CheckedTextView完成自定义radiobutton的listview
- 实现listview里radiobutton单选
- listview中radiobutton的选择问题
- ListView 中使用RadioButton实现单选
- listview中radiobutton的选择问题
- ListView+radioButton实现每行单选
- Android RadioButton与ListView的混合使用
- Android RadioButton与ListView的混合使用
- c++ file operation
- Android获取图片资源的4种方式
- VIM 代码折叠
- SSH 显示中文乱码
- 2011有感
- SDK数据库系统+radiobutton+listview
- firefox如何启动会慢?解决方法!
- js中substring或split方法取得URL中的域名
- Fedora 16 Grub2 修复
- 中国四大名著翻译
- 练习笔记5
- JQuery插件 - Uploadify (简单易用的上传插件)配置详解
- 《深入计算机系统》(第九章)
- LoadRunner 11(LR11) 下载链接及破解方法