对话框中有个EDIT BOX,MFC中可以关联变量,SDK中如何提取EDIT控件中的内容?
我知道是用GetWindowsText函数,可是我第一个参数不知道怎么设。不知道各位大侠能不能说详细点。或者给我一个事例,对这方面的东西有个比较详细的介绍,或者给介绍几个网站,或者介绍点书。
我的EMAIL:[email protected]
不胜感激
我知道是用GetWindowsText函数,可是我第一个参数不知道怎么设。不知道各位大侠能不能说详细点。或者给我一个事例,对这方面的东西有个比较详细的介绍,或者给介绍几个网站,或者介绍点书。
我的EMAIL:[email protected]
不胜感激
((CEdit*)GetDlgItem("IDC_EDIT"))->GetWindowText(&str);
TCHAR szText[100];
HWND hEdit = GetDlgItem(hDlg, IDC_EDIT);
GetWindowText(hEdit, szText, 100);
这样之后,szText中存放的就是edit中的字符串了。
不过这个函数不能用于取得星号密码。
GetWindowText(GetDlgItem(hDlg,IDC_EDIT_SRC),szText,MAX_LENGTH);
而这样用就对了?
HWND hEdit;
hEdit=GetDlgItem(hDlg,IDC_EDIT_SRC);
GetWindowText(hEdit,szText,MAX_LENGTH);
比如:
case IDC_BUTTON_SRC: //打开显示源文件夹路径对话框
MessageBox(hDlg, "have cli cked the src button.","SRC",MB_OK);
break;
弹出个BOX后它不能被选中(一直是灰的),能拖来拖去,但是不能按确定按钮;
所有的CASE语句里都不能这么做,包括AboutBox回调函数中的确定.
为什么啊?
GetWindowText(hEdit,szText,MAX_LENGTH);
这样应该没问题。这个问题没遇到过……
HWND hEdit = GetDlgItem(hDlg, IDC_EDIT);
GetWindowText(hEdit, szText, 100);解决你的第一个问题
你的第二个问题是你对
about的窗口函数该了吗?
不知道能不能把你的代码拿来看看!
MessageBox(0, "have cli cked the src button.","SRC",MB_OK);
break;
这样。
//功能:将源路径下的文件到目的路径(不能递归保存,也就是说只保存源路径下第一层的文件)
// 保存时只覆盖有改动的文件#include "stdafx.h"
#include "resource.h"
#include <WINUSER.H>//回调函数声明
LRESULT CALLBACK DlgMain(HWND,UINT,WPARAM,LPARAM); //关于主对话框
LRESULT CALLBACK DlgAbout(HWND,UINT,WPARAM,LPARAM); //关于About对话框//普通函数声明
void SaveFiles(LPTSTR lpDstDir,const LPTSTR lpSrcDir); //保存目录下的文件(不能递归)//全局变量定义
HINSTANCE hInst; //全局实例句柄
const int MAX_LENGTH=256; //文件目录长度的最大值int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DLG_MAIN),NULL,(DLGPROC)DlgMain);
return TRUE;
}//回调函数定义
LRESULT CALLBACK DlgMain(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{//主对话框函数定义
TCHAR srcDir[MAX_LENGTH]; //指向源文件夹
TCHAR dstDir[MAX_LENGTH]; //指向目的文件夹 int wmId = LOWORD(wParam); //保存要执行的命令(由wParam传入)
int wmEvent = HIWORD(wParam); //命令类型 HWND hEditSrc=GetDlgItem(hDlg,IDC_EDIT_SRC); //得到两个EDIT BOX的句柄
HWND hEditDst=GetDlgItem(hDlg,IDC_EDIT_DST); //srcDir=; //路径初始化
//dstDir=; switch(message)
{
case WM_COMMAND:
wmId = LOWORD(wParam); //得到要执行的命令
wmEvent = HIWORD(wParam); //得到命令类型
switch(wmId)
{
case IDC_BUTTON_SRC: //打开显示源文件夹路径对话框
MessageBox(hDlg,"have cli cked the src button.","SRC",MB_OK);
break; case IDC_BUTTON_DST: //打开显示目的文件夹路径对话框
MessageBox(hDlg,"have clicked the dst button.","dst",MB_OK);
break; case ID_SAVE: //单击保存按钮
GetWindowText(hEditSrc,srcDir,MAX_LENGTH); //得到编辑框的源路径
GetWindowText(hEditDst,dstDir,MAX_LENGTH); //和目的路径
//保存源路径下的文件到目的路径(不能递归)
SaveFiles(dstDir,srcDir);
break; case ID_CANCEL: //退出
// MessageBox(hDlg,"have clicked the cancel button.","cancel",MB_OK);
EndDialog(hDlg,IDCANCEL);
break; case IDC_ABOUT: //关于
DialogBox(hInst,MAKEINTRESOURCE(IDD_DLG_ABOUT),hDlg,(DLGPROC)DlgAbout);
break;
}
break;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc(hDlg, message, wParam, lParam);
}LRESULT CALLBACK DlgAbout(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{//About对话框函数定义
switch (message)
{
case WM_INITDIALOG:
return TRUE; case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
//return DefWindowProc (hDlg, message, wParam, lParam);
return FALSE;
}void SaveFiles(LPTSTR lpDstDir,const LPTSTR lpSrcDir) //保存目录下的文件(不能递归)
{
//MessageBox(NULL,"have clicked the cancel button.","cancel",MB_OK);
return;
}
所有的CASE语句里都不能这么做,包括AboutBox回调函数中的IDOK.
为什么啊?