《Windows程序设计》这本书很好,C+API+VCRC文件由VC维护,我们只需要在VC界面插入资源,某些特殊情况下,也可以自己用记事本打开RC文件进行修改。1.创建主
窗口,myclassname是自己用WNDCLASS注册的类名//参数依次是:类名-窗口标题-窗口样式-x-y-width-height-父窗口-菜单ID-实笑伍旁例句柄-CREATESTURCT指针hwnd=CreateWindow(TEXT("myclassname"),TEXT("未命名"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL)2.创建子窗口:必须有WS_CHILD样式,必须指定父窗口/碰橡/editstaticbuttonlistbox是系统预先定义好的类名//对button指定不同的样式,可有单选
按钮、多选按钮、复选框等等形式//对static指定不同的样式,可显示矩形区域、静态文字、加载图标、位图等CreateWindow(TEXT("edit"),TEXT("ES_LEFT"),WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_MULTILINE|ES_LEFT,0,0,cxChar*20,2*cyChar,hwnd,(HMENU)12,hInst,NULL)CreateWindow(TEXT("button"),TEXT("GROUPBOX"),WS_CHILD|WS_VISIBLE|BS_GROUPBOX,0,3*cyChar,60,4*cyChar,hwnd,(HMENU)0,hInst,NULL)CreateWindow(TEXT("button"),TEXT("RADIOBUTTON"),WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,0,8*cyChar,60,cyChar,hwnd,(HMENU)1,hInst,NULL)CreateWindow(TEXT("button"),TEXT("AUTORADIOBUTTON"),WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,0,10*cyChar,60,cyChar,hwnd,(HMENU)2,hInst,NULL)CreateWindow(TEXT("button"),TEXT("AUTOCHECKBOX"),WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,0,12*cyChar,12*cxChar,cyChar,hwnd,(HMENU)3,hInst,NULL)CreateWindow(TEXT("button"),TEXT("CHECKBOX"),WS_CHILD|WS_VISIBLE|BS_CHECKBOX,0,14*cyChar,12*cxChar,cyChar,hwnd,(HMENU)4,hInst,NULL)CreateWindow(TEXT("button"),TEXT("3STATE"),WS_CHILD|WS_VISIBLE|BS_3STATE,0,16*cyChar,12*cxChar,cyChar,hwnd,(HMENU)5,hInst,NULL)CreateWindow(TEXT("button"),TEXT("AUTO3STATE"),WS_CHILD|WS_VISIBLE|BS_AUTO3STATE,0,18*cyChar,12*cxChar,cyChar,hwnd,(HMENU)6,hInst,NULL)CreateWindow(TEXT("button"),TEXT("PUSHBUTTON"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,0,20*cyChar,12*cxChar,cyChar,hwnd,(HMENU)7,hInst,NULL)CreateWindow(TEXT("button"),TEXT("DEFPUSHBUTTON"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,0,22*cyChar,12*cxChar,cyChar,hwnd,(HMENU)8,hInst,NULL)CreateWindow(TEXT("static"橘清),TEXT("SS_LEFT"),WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|SS_LEFT,0,24*cyChar,12*cxChar,cyChar,hwnd,(HMENU)9,hInst,NULL)CreateWindow(TEXT("static"),TEXT("SS_BLACKRECT"),WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|SS_BLACKRECT,0,26*cyChar,12*cxChar,cyChar,hwnd,(HMENU)10,hInst,NULL)CreateWindow(TEXT("static"),TEXT("SS_BLACKFRAME"),WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|SS_BLACKFRAME,0,28*cyChar,12*cxChar,cyChar,hwnd,(HMENU)11,hInst,NULL)你如果只是在内存中 *** 作,不需要存到文件、数据库中,就直接建立一个全局List<对象>就行了。但一关页面你输入的内容就不能只在了。
内存中的例子。
1、根据你的datagridview建立一者伍信个model class。
public class Student
{
public string Name{getset}
public string Sex{getset}
public DateTIme Birthday{getset}
public string Job {getset}
public string Tel{getset}
}
2、在你的这个窗体Form中加一个全局List对象
private List<Student>MainDB = new List<Student>()
3、在你的Form_Load中把这个数组初使化一下,安全点
4、你的[完成]按钮_Click中加你List的Add了。把输入的内容加到List中
protected void 完成按钮名称_Click事件(object obj, EventArgs e)
{
Student obj = new Student()
obj.Name = 你姓名文件框的值
obj.Sex = 性别下拉框的值
......
MainDB.Add(obj)
}
5、查询按钮事件了....
protected void 查询按钮名称_Click事件(object obj, EventArgs e)
{
//取查询条件框中的值
string name = 查橘启询文本框.Text.Trim()
var obj = List.Where(a=>a.Name.Contains(name)).FirstOrDefault()/首轮/Lambda查询
datagridview1.DataSource = obj
}
==============以上是内存的方法=======
如果你非要存数据库,就是在完成按钮中你要加写入Insert。查询中就要读出Select。
当然你还可以序列化到xml中,或存json
造成的原因是,Groupbox先画矩形,然森悉后把文本画上。当文本的背景不透明时,文本可以覆盖掉下面的横线。当透明的时候,就不能覆盖了。
解决办法很多种。
最好的办法是重载CStatic,重绘GroupBox。这种方法简单些,但是,如果客户采用了不同的桌面主题,或者使用了不同的界面风格,得不到体现,因为都还是你画的样子。
还有一种比较复杂的方法。
在背景被擦除前,先准备一张位图(大小和GroupBox一样大,可以GetWindowRect得到),准备一个内存DC,将位图选入该DC。然后向GroupBox发送壹条WM_PAINT消息,但是传递该DC做参数,这样做的目的是,引发GroupBox重绘,但是让它把此耐乎自己画到这个位图中而不是屏幕上。
背景被重会后,截取文亩坦本的那个块,BitBlt到对应位置。这种方法的好处是,如果客户使用Vista或者XP等不同的风格的界面,系统都会用原先的界面界面风格画上,只是背景透明了。
评论列表(0条)