1.模态与非模态对话框的创建
(1)模态对话框:首先在资源视图Dialog个子目录下右击插入一个新的Dialog,然后右击该对话框为其添加一个类,类名为MyDlg,基类位CDialogEx,然后点击完成。然后在一个按键的响应函数中添加以下代码:
MyDlg my;
INT_PTR nResponse= my.DoModal();
nResponse保存返回值,IDOK或者IDCANCEL,可以利用该值来进行下一步工作。
(2)非模态对话框:过程同上,不过代码要这样写:
MyDlg *my1 =new MyDlg();
my1->Create(IDD_DIALOG1, this);
my1->ShowWindow(SW_SHOW);
IDD_DIALOG1位对话框的ID。
2.SendMessage()的使用
首先在在头文件总定义一个消息
#define UM_TEST WM_USER+1
然后在类声明中添加消息映射函数
afx_msg LRESULT OnTest(WPARAM wparam,LPARAM lparam);
DECLARE_MESSAGE_MAP()
然后C++文件中添加消息响应
ON_MESSAGE(UM_TEST,OnTest)
然后定义该函数
LRESULT CdialogDlg::OnTest(WPARAM wparam,LPARAM lparam)
{
MessageBox(_T("JUST TEST"));
SetDlgItemInt(IDC_EDITAB,wparam+lparam); //这行是将两个传递进来的参数相加显示在一个编辑框控件上
return TRUE;
}
然后在一个按键响应函数中发送消息
SendMessage(UM_TEST,3,5);
3.定时器的使用首先在头文件中定义一个定时器
#define TIMER 1 //1为ID号
如果需要多个定时器,可以多定义几个,ID 号不同,然后就可以设置定时器了
SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT*lpfnTimer)(HWND,UINT,UINT,DWORD));
定时器ID 定时时间 刷新时的响应函数,一般不用,将其设置为0
然后在需要定时器的地方使用SetTimer(TIMER,3000,0);此为设置一个三秒的定时器。
然后让对话框响应WM_TIMER消息,次消息的响应函数为OnTimer( UINT nIDEvent),
nIDEvent用来区分是哪个定时器的时间到了,如果需要取消一个定时器可以使用KillTimer( UINT nIDEvent);
阅读(1004) | 评论(0) | 转发(0) |