博文

关于线程的同步(2006-11-29 16:39:00)

摘要:看到几篇好文,关于线程同步的,试一下怎样引用,留着以后需要用。 《多线程同步技术》 http://blog.programfan.com/article.asp?id=10899 http://blog.programfan.com/article.asp?id=10900 http://blog.programfan.com/article.asp?id=10901 http://blog.programfan.com/article.asp?id=10902......

阅读全文(2854) | 评论:0

笔记:在vc++的MFC中使用动态链接库(2006-11-29 12:56:00)

摘要:使用动态链接库: 1、选择菜单“文件”——“新建”——“工程”——“MFC AppWizard[exe] ”建立一个单窗口程序(命名为“usedll”)
2、为CMyView添加OnLButtonDown处理,添加以下代码:
void CUsedllView::OnLButtonDown(UINT nFlags, CPoint point)
{
 CClientDC dc(this); 
 typedef void(*Ellipse)(CClientDC *pDC,int,int,int,int);
 typedef void(*Rectangle)(CClientDC *pDC,int,int,int,int);
 Ellipse pEllipse;
 Rectangle pRectangle;
 HINSTANCE hInstance=LoadLibrary("D:\\c++\\mydll\\Debug\\mydll.dll");
 PROC fn1=GetProcAddress(hInstance,"DrawEllipse");
 PROC fn2=GetProcAddress(hInstance,"DrawRectangle");
 pEllipse=(Ellipse)fn1;
 pRectangle=(Rectangle)fn2;
 (*pEllipse)(&dc,10,10,100,100);
 (*pRectangle)(&dc,100,100,150,150);
 
 CView::OnLButtonDown(nFlags, point);
}
3、编译运行。......

阅读全文(4592) | 评论:0

笔记:用VC++的MFC设计动态链接库(2006-11-29 12:49:00)

摘要:设计动态链接库: 1、选择菜单“文件”——“新建”——“工程”——“MFC AppWizard[dll] ”(命名为“mydll”)
2、在mydll.h中添加函数声明:
void DrawEllipse(CClientDC *pDC,int x1,int y1,int x2,int y2);
void DrawRectangle(CClientDC *pDC,int x1,int y1,int x2,int y2);
3、在mydll.cpp中最后添加函数定义:
void DrawEllipse(CClientDC *pDC,int x1,int y1,int x2,int y2)
{
 pDC->Ellipse(x1,y1,x2,y2);
} void DrawRectangle(CClientDC *pDC,int x1,int y1,int x2,int y2)
{
 pDC->Rectangle(x1,y1,x2,y2);
}
4、在mydll.def中最后添加声明:
DrawEllipse
DrawRectangle
5、编译——构建“mydll.dll”......

阅读全文(3741) | 评论:0

笔记:在MFC中怎样添加一个非模态的对话框(2006-11-29 11:02:00)

摘要:添加一个非模态对话框
1、点击菜单 插入——资源,选择Dialog,点击新建。
2、编辑对话框,添加一些控件什么的。
3、双击对话框或者打开ClassWizard,为对话框建立一个类,如CMyDialog。
4、在*view.cpp的开头添加新建立的类的头文件(如:#include "mydialog.h")。这点很重要,漏了这步编译的时候经常提示出错的。
5、在主窗口的view类定义中添加一个对话框的指针定义,如:
class CTest3View : public CView
{
......
public:
 CMyDialog* pMydialog;
......
}
6、为主窗口增加一个按钮或者菜单,准备点击后弹出对话框,用ClassWizard指定执行函数(如OnOption)。内容如下:
void CTest3View::OnOption()
{
pMydialog=new CMyDialog;//建立对话框
pMydialog->m_width=width;//向对话框输出数据(根据实际情况定)
pMydialog->Create(CMyDialog::IDD);
pMydialog->ShowWindow(SW_SHOW); //显示对话框
}
7、运行一下,对话框就出现了。
8、为了让对话框的数据能反馈回主窗口,需要通过对话框向主窗口发送一个自定义消息,触发主窗口的一个函数,把对话框的数据传回主窗。为了能向主窗口发送消息,需要取得主窗口指针,因此重载对话框的构造函数,生产对话框的时候把主窗的指针传给对话框。
9、在CMyDialog.h增加以下:
#define WM_DIALOGOK WM_USER+1  //自定义点击OK按钮的消息宏
#define WM_DIALOGAPPLY WM_USER+2 //自定义点击APPLY按钮的消息宏
class CMyDialog : public CDialog
{
...
public:
 CMyDialog(CView* pParent);&......

阅读全文(6527) | 评论:2

笔记:在VC++的MFC中为对话框添加各类型控件(2)(2006-11-28 16:39:00)

摘要:
G、增加列表框
1、在对话框中添加1个列表框(ListBox)。
2、打开ClassWizard,为列表框(IDC_LIST1)添加一个对应的参数(CString):m_list1_string,和一个对应的控件(CListBox):m_list1。
3、在对话框的数据交换函数(CMyDialog::DoDataExchange)中,添加以下代码:
 m_list1.AddString("红色");//添加列表框的项目
 m_list1.AddString("绿色");
 m_list1.AddString("蓝色");
 //为了让列表项目能自动选择项目,以上代码应添加在数据交换“DDX_LBString(pDX, IDC_LIST1, m_list1_String);”之前
4、调用对话框函数如:
void CTest3View::OnOption()
{
 CMyDialog mydialog;
 mydialog.m_list1_String="红色";//与对话框进行数据交换
 if(mydialog.DoModal()==IDOK)//模式对话框调用
 {
  colorstring=mydialog.m_list1_String;//从对话框获得数据
 };
 IfInvalidate(); 
} H、增加组合框
1、在对话框中添加1个组合框(combobox)。
2、打开ClassWizard,为组合框(IDC_COMBO1)添加一个对应的参数(CString):m_combo_string。
3、打开组合框的属性,在DATA页面添加列表项目。......

阅读全文(5117) | 评论:0

笔记:在VC++的MFC中为对话框添加各类型控件(1)(2006-11-21 11:40:00)

摘要:入门学习笔记: A、增加新对话框(模态):
1、点击菜单插入-资源,选择Dialog,点击新建。
2、编辑一下对话框。
3、资源做完了,准备连接上一个类,点击菜单查看-建立类向导(ClassWizard)。
4、点击AddClass新建一个类。
5、如无意外刚才新添加的资源(包括资源的ID号)已经出现在新建类对话框中,只需要添加一个类名(如CMyDialog),点击确定,新的类便产生,并与资源连接上。
6、在*view.cpp的开头添加新建立的类的头文件(如:#include "mydialog.h")。
7、在执行函数里面添加打开对话框的指令:
 CMyDialog mydialog;//建立实例
 mydialog.DoModal();//实例执行 
8、运行一下。 B、增加微调控件:
1、在对话框的已有文本框旁边添加一个spin。
2、在spin属性的STYLE中选Setbuddyinteger。
3、打开ClassWizard,为文本框添加一个对应m_edit1控件和一个整数m_abc。
4、为spin添加一个对应m_spinbtn1控件。
5、在CMyDialog::OnInitDialog() 中添加以下代码:
 m_abc=10;
 m_spinbtn1.SetBuddy(&m_edit1);//设置关联的控件
 m_spinbtn1.SetRange(0,255);//设置可以微调范围
 m_spinbtn1.SetPos(m_abc);//设置初始值
8、运行一下。 C、增加滑动条:
1、在对话框中添加一个滑动条(slider)。
2、在slider的属性的STYLE中选择滑动条是竖向还是横向。
3、打开ClassWizard,为滑动条添加一个对应的m_slider1控件和一个整数m_slider1_value。
4、在CMyDialog::OnInitDialog() 中添加以下代码:
 m_slider1.SetRange(0,255);//设置数值范围
 m_slider1_value=......

阅读全文(14030) | 评论:2

学习VC++的视频教程(2006-10-30 15:26:00)

摘要:在PCONLINE上找到一个《视频教程:VC++从入门到精通》,比自己一个人看闷书舒服很多啊。 http://www.pconline.com.cn/pcedu/empolder/gj/vc/0607/820674.html......

阅读全文(2229) | 评论:0

ALC的WebCtrl在FrontPage添加插件的问题处理(2006-10-29 11:06:00)

摘要:ALC的WEBCTRL是一个基于JAVA的B/S楼宇自控管理软件。支持完全开放性的BACNET(ip)协议。管理软件中的图形化界面均为JSP程序,在安装WEBCTRL时,该软件会在MS的FRONTPAGE中添加插件,使得FP界面中增加WEBCTRL的编辑工具栏及菜单,成为JSP的编辑器,可以用于相关JSP文件的制作。 今天在一台新安装WEBCTRL的机器中,用FP中打开一个以前制作好的JSP文件,发现双击相关图块,出现安装相应的功能插件失败的信息。经过试验,发现可以用以下方式解决: 将WEBCTRL软件目录下\frontpage\Bots目录下的所用文件夹,一并拷贝到 C:\Documents and Settings\(用户名)\Application Data\Microsoft\FrontPage\BotCache 目录中,再双击图块,相应的编辑对话框便正常打开了。......

阅读全文(3201) | 评论:2

c# vs VB 变量表(2006-10-28 11:34:00)

摘要: Class Library Name  VB Name  C# Name Contains Byte Byte byte An integer from 0 to 255. Int16  Short short  An integer from –32,768 to 32,767. Int32  Integer  int  An integer from –2,147,483,648 to 2,147,483,647. Int64  Long long An integer from about –9.2e18 to 9.2e18. Single Single float  A single-precision floating point number from approximately –3.4e38 to 3.4e38. Double Double double A double-precision floating point number from  approximately –1.8e308 to 1.8e308. Decimal  Decimal  decimal A 128-bit fixed-point fractional number that  supports up to 28 significant digits. Char Char char A single 16-bit Unicode character. String String string A variable-length series of Unicode characters. Boolean  Boolean  bool A true or false value. DateTime Date *  Represents any date and time from 12:00:00 AM, ......

阅读全文(4415) | 评论:0

VC原来真的好难(2006-10-28 10:46:00)

摘要:一直都用DELPHI来编些小程序玩,现在想深入一点,学习一点VC,结果发现不是一般的困难啊,看了好一阵的书了,摸来摸去,现在居然连想做一个只有一个按钮的窗口,点击按钮后能在窗口上显示一个“HELLO”的简单程序都做不出来,始终理解不了程序是哪里进哪里出的,头晕了。......

阅读全文(3522) | 评论:0