请问在WIN32 API中使用哪个函数能实现在窗体上创建一个用于输入文字或数字的框(类似于VB、VC、C#中的textbox控件)。然后又该使用哪个函数来获取该框中所输入的东西?

解决方案 »

  1.   

    那CreateWindow的第一个参数应该选那个Class?
      

  2.   

    用EDIT其实你要建的是一个edit box
      

  3.   

    HWND Input_IPA = CreateWindow( 
                          "EDIT",    
                          NULL,       
                          WS_VISIBLE | WS_CHILD, 
                          70,         
                          10,         
                          25,       
                          20,        
                          hWnd,       
                          NULL,       
                          hInstance, 
                          NULL);      
    是这样吗?另外如何获得输入到EDIT中的数据呢?
      

  4.   

    倒数第三个参数不对,对于子窗口它应该是子窗口的ID,如果设为NULL的话,你就没办法得到EDIT中的数据了。用GetDlgItemText来获取内容。
      

  5.   

    获取里面的内容:GetWindowText()
      

  6.   

    to:wltg2001(红猪)。谢谢朋友你的回复,但倒数第三个参数是代表menu的。倒数第四个才是代表窗口ID的,我的这个程序中没有子窗口,EDIT控件是建立在父窗口上的。
      

  7.   

    hWndEdit=CreateWindow("EDIT", //创建编辑框
    NULL,   WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_MULTILINE|WS_BORDER,
    70,         
    10,         
    25,       
    20, 
      hwnd,
    (HMENU)ID_EDITCHILD,
    hInst,
    NULL);
      

  8.   

    那么GetDlgItemText的第一个参数所指的句柄到底是“EDIT"还是父窗口的句柄?我的这个程序其实很简单,只是有一个父窗口,而这个EDIT窗口就建立在这个父窗口上。还有该函数的第二个参数应该这么填?我这个EDIT窗口没有标题,纯粹是当一个输入框在用。
      

  9.   

    我说的没有错,CreateWindow倒数第三个参数对于一个子窗口来说代表是这个控件的ID,倒数第四个参数指的父窗口的句柄。
      

  10.   

    用GetDlgItemText和GetWindowText其实都能得到控件上的字符,不过前者不需要控件的窗口句柄,所以GetDlgItemText第一个参数就是父窗口的句柄,第二个参数是利用CreateWindow创建时指定的控件ID,所以不能设为NULL。GetWindowText则必须要用到控件的窗口句柄,可以先用GetDlgItem来获取这个控件的句柄。
      

  11.   

    谢谢红猪兄不厌其烦的回复,你说“第二个参数是利用CreateWindow创建时指定的控件ID”,请问我该怎么指定这个ID?又怎么获取这个ID?实在是初学WIN32api编程。
      

  12.   

    既然用CreateWindow创建了edit,直接用edit的hwnd就可以啊,还要id干啥?用GetWindowText这个edit的id你可以随便指定一个.不和这个窗口上的其它id不重复就行.
      

  13.   

    Input_IP = CreateWindow( 
                          "EDIT",   
                           NULL,        
                          WS_CHILD|WS_VISIBLE|ES_MULTILINE|WS_BORDER,  
                          70,         
                          10,        
                          120,       
                          20,        
                          hWnd,       
                          (HMENU)ID_EDIT,      
                          hInstance, 
                          NULL);      
    上面是我定义的EDIT窗口,主要是用于输入IP地址的。用了GetDlgItemText(hWnd,ID_EDIT, receives_IP, 11);这个函数,却似乎得不到输入的IP,下面是IP转换的代码:
    string_IP = puts(receives_IP);
    IP = (const char*)string_IP;
    _connectAddr=inet_addr(IP);
    WHCSocketInceptPort.sin_addr.S_un.S_addr = _connectAddr;
      

  14.   

    这么简单的问题还要问CSDN,建议看《Windows 程序设计》(上、下册)
    只要看完上册基础知识就可以了。