对话框中有个EDIT BOX,MFC中可以关联变量,SDK中如何提取EDIT控件中的内容?
我知道是用GetWindowsText函数,可是我第一个参数不知道怎么设。不知道各位大侠能不能说详细点。或者给我一个事例,对这方面的东西有个比较详细的介绍,或者给介绍几个网站,或者介绍点书。
我的EMAIL:[email protected]
不胜感激

解决方案 »

  1.   

    CString& str;
    ((CEdit*)GetDlgItem("IDC_EDIT"))->GetWindowText(&str);
      

  2.   

    第一个参数是edit的句柄,可以这样使用:
    TCHAR szText[100];
    HWND hEdit = GetDlgItem(hDlg, IDC_EDIT);
    GetWindowText(hEdit, szText, 100);
    这样之后,szText中存放的就是edit中的字符串了。
    不过这个函数不能用于取得星号密码。
      

  3.   

    为什么我这么用就不对?
    GetWindowText(GetDlgItem(hDlg,IDC_EDIT_SRC),szText,MAX_LENGTH);
    而这样用就对了?
    HWND hEdit;
    hEdit=GetDlgItem(hDlg,IDC_EDIT_SRC);
    GetWindowText(hEdit,szText,MAX_LENGTH);
      

  4.   

    为什么我弹出来的对话框上的按钮不能点??包括MessageBox()的“确定”?
    比如:
    case IDC_BUTTON_SRC:      //打开显示源文件夹路径对话框
       MessageBox(hDlg, "have cli cked the src button.","SRC",MB_OK);
    break;
    弹出个BOX后它不能被选中(一直是灰的),能拖来拖去,但是不能按确定按钮;
    所有的CASE语句里都不能这么做,包括AboutBox回调函数中的确定.
    为什么啊?
      

  5.   

    hEdit=GetDlgItem(hDlg,IDC_EDIT_SRC);
    GetWindowText(hEdit,szText,MAX_LENGTH);
    这样应该没问题。这个问题没遇到过……
      

  6.   

    ::GetWindowText(hwnd,str,sizeof(str));
      

  7.   

    TCHAR szText[100];
    HWND hEdit = GetDlgItem(hDlg, IDC_EDIT);
    GetWindowText(hEdit, szText, 100);解决你的第一个问题
    你的第二个问题是你对
    about的窗口函数该了吗?
    不知道能不能把你的代码拿来看看!
      

  8.   

    GetWindowText函数的第一参数是一个窗口句柄,这个句柄可以用 GetDlgItem(hDlg,IDC_EDIT),其中hDlg你的对话框句柄。至于你的第二个问题,我认为 不要前面的那个句柄参数吧。你试一下看看。
      

  9.   

    case IDC_BUTTON_SRC:      //打开显示源文件夹路径对话框
       MessageBox(0, "have cli cked the src button.","SRC",MB_OK);
    break;
    这样。
      

  10.   

    // MyBackuper.cpp : Defines the entry point for the application.
    //功能:将源路径下的文件到目的路径(不能递归保存,也就是说只保存源路径下第一层的文件)
    //      保存时只覆盖有改动的文件#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;
    }
      

  11.   

    里面所有BOX弹出后它不能被选中(一直是灰的),能拖来拖去,但是不能按确定按钮;
    所有的CASE语句里都不能这么做,包括AboutBox回调函数中的IDOK.
    为什么啊?