C语言也能干大事第十四节(如鹏基础)
来源:互联网 发布:农村淘宝家乡版下载 编辑:程序博客网 时间:2024/05/16 23:35
程序中打开新对话框,其实有代码可参考,WinMain。
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc);
只要复制一份MainDlg.cpp和MainDlg.h改一下就行了
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MYDLG), NULL, Dlg1_Proc);
怎么传递参数?使用DialogBoxParam函数,对比差别。
传入int;传入字符串;传入结构体。
传出。
怎样判断按下的按钮?通过返回值配合
怎么样在对话框关闭的时候把参数回传回去?SetWindowLong设置的东西是和窗口的实例绑在一起的。什么是窗口实例?一个窗口打开两个、一个窗口打开两次(隐藏/打开、销毁/打开)。
SetWindowLong(hwnd,GWL_USERDATA,(LPARAM)param);
1、在资源中插入新的对话框,并且调整控件
2、
HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOGINDIALOG), NULL, Main_Proc);
3、每个对话框都有自己的一套MainDlg.cpp类似的代码,Main_Proc、Main_OnInitDialog等等
修改Main_Proc、Main_OnInitDialog等的前缀为LoginDlg_****,函数名不能重复
复制一份LoginDlg.h
#ifndef _MAIN_H等也要修改
DialogBoxParam
parameter:参数
#include "LoginDlg.h"
在OnInitDialog中处理传入参数,lParam就是传入的参数
通过DialogBoxParam来传入参数,在对话框中的***_OnInitDialog的LPARAM lParam来取参数。
long类型,指针就是long了。
传递字符串
TCHAR* buff = "abcd";
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_LOGINDIALOG), NULL, LoginDlg_Proc,(LPARAM)buff);//LoginDlg_Proc
在对话框之间传字符串(指针)
HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
LoginData ld;
ld.userName = "yzk";
ld.password = "123456";
//TCHAR* buff = "abcd";
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_LOGINDIALOG), NULL, LoginDlg_Proc,(LPARAM)&ld);//LoginDlg_Proc
BOOL LoginDlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
LoginData* ld = (LoginData*)lParam;
SetDlgItemText(hwnd,IDC_EDITUSERNAME,ld->userName);
SetDlgItemText(hwnd,IDC_EDITPASSWORD,ld->password);
return TRUE;
}
DialogBoxParam默认是阻塞运行的
可以设置与窗口句柄关联的数据,SetWindowLong可以看做是把一些数据与窗口管理起来,“让它代为保管”
SetWindowLong、GetWindowLong来在窗口中保存指针就可以了
只有一个文本框的对话框,有两个按钮【确定】、取消,允许对话框的使用者指定一个函数用来进行校验,能够校验值的正确性,如果不正确还会显示错误信息。提示:函数指针。
EndDialog(hwnd, 1);
在调用代码中通过DialogBoxParam的返回值就可以得到EndDialog设定的参数
不要重复同样的错误。不要忘了break。通过调试功能发现的问题。在怀疑的地方加断点调试
LBN_DBLCLK:DoubleClick
if(LBN_DBLCLK==codeNotify)
{
//MessageBox(hwnd,TEXT("双击"),TEXT(""),MB_OK);
//LB_GETCURSEL消息
int index = SendDlgItemMessage(hwnd,IDC_LIST1,LB_GETCURSEL,0,0);
TCHAR buff[255];
SendDlgItemMessage(hwnd,IDC_LIST1,LB_GETTEXT,index,(LPARAM)buff);
MessageBox(hwnd,buff,TEXT(""),MB_OK);
}
课后作业:允许用户定制校验策略的InputDialog
2、
Codenotify=LBN_DBLCLK 用户双击列表框中的字符串。
if(LBN_DBLCLK==codeNotify)
{
int index = SendDlgItemMessage(hwnd,IDC_LIST1,LB_GETCURSEL,0,0);
TCHAR buff[255];
SendDlgItemMessage(hwnd,IDC_LIST1,LB_GETTEXT,index,(LPARAM)buff);
MessageBox(hwnd,buff,TEXT(""),MB_OK);
}
3、
LBN_SELCHANGE
http://msdn.microsoft.com/en-us/library/bb773169(VS.85).aspx
- C语言也能干大事第十四节(如鹏基础)
- C语言也能干大事第九节(如鹏基础)
- C语言也能干大事第十节(如鹏基础)
- C语言也能干大事第六节(如鹏基础)
- C语言也能干大事第七节(如鹏基础)
- C语言也能干大事第十二节(如鹏基础)
- C语言也能干大事第八节(如鹏基础)
- C语言也能干大事十一节(如鹏基础)
- C语言也能干大事第十三节(如鹏基础)
- C语言也能干大事第二节
- C语言也能干大事第四节
- c语言也能干大事
- c语言也能干大事
- C语言也能干大事
- C语言也能干大事
- C语言也能干大事
- c语言也能干大事!
- 《C语言也能干大事》第二十节:多线程开发
- 闲聊linux中的input设备(1)Linux中的设备大家族
- Solr分布式搜索技术实现分析
- C++读取以逗号为分隔符的数值
- Myeclipse8.5性能优化
- 在thinkpad sl400上U盘安装centos6.3的过程
- C语言也能干大事第十四节(如鹏基础)
- varnish配置详解
- 管道 子进程
- 一劳永逸设置Oracle可随时更换机器名和IP地址
- ASP.NET MVC小改裝 - 以Json.NET取代JavaScriptSerializer
- oracle 分析表
- NYOJ - 子串和(DP)
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 第六堂课后作业