如何让win32 Application显示输入框


来自:http://blog.csdn.net/yiyefangzhou24/article/details/7460761


 很多人纠结如何在win32 application下显示一个类似这样的输入框。而win32下又不兼容MFC的内容怎么办?可能我们就需要自己写这个对话框了。

首先将这个对话框画好作为资源保存到我们的win32程序中,具体做法如下:

1,  创建一个空的win32 Application程序。

2,  点击菜单栏上的Insert(插入)->Resource(资源),选择对话框资源,然后选择New(新建),就会跳出一个对话框,这时我们就可以对这个对话框进行操作,比如拖动一个Edit控件啊,等等,和MFC中的对话框程序一样。

3,  对话框画好后单击保存,会跳出一个资源保存位置窗口,我们将这个对话框资源保存到我们的win32 Application的目录下,文件名定为Dialog.rc。我们会看到后缀是一个.rc的文件,这是资源文件。

       这个对话框资源就做好了,回到win32 Application的工程下,因为他是一个空项目,当然你要为他添加一个c++文件了,否则你程序写哪?下面我们要做的是如何应用这个对话框资源。首先在Source File中添加刚才的资源文件,右击Source File选择Add Files To Folder,选择刚才我们保存的资源文件Dialog.rc,同理在Header File中添加刚才同目录下的Resource.h,回到你的win32 Application的工程下在你需要跳出这个输入框的程序位置使用这样一个函数DialogBox,这个函数是使用资源中的对话框。MSDN上有,请参见MSDN

       下面的问题是如何获得输入框中的输入内容。这里我们不能使用MFC的获得方式UpDateData()函数,因为这是个win32的项目,我们只能在这个DialogBox函数中编写这个对话框的回调函数,在这个回调函数中对IDOK消息进行处理,用SendMessage获得Edit Control控件中的内容,具体代码如下,我写的是一个密码框的获取。

  1. BOOL GetTex(HWND hWnd,char key[10])  
  2. {  
  3.     HWND h;  
  4.     h=GetDlgItem(hWnd,IDC_EDIT1);  
  5.     char temp[255]={0};  
  6.     char c;  
  7.     PostMessage (h,EM_SETPASSWORDCHAR,0,0);//取消密码属性  
  8.     Sleep(10);  
  9.     SendMessage(h,WM_GETTEXT,255,(LPARAM)temp);  
  10.     PostMessage (h,EM_SETPASSWORDCHAR,c,0);//恢复密码属性  
  1.     if(!strcmp(key,temp))  
  2.     {  
  3.         MessageBox(NULL,key,"ÃÜÂëÕýÈ·£¡",MB_OK);  
  4.         return TRUE;  
  5.     }  
  6.     else  
  7.         return FALSE;  
  8. }  
  9.   
  10.   
  11. BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)  
  12. {  
  13.     char key[10]="";//对比密码  
  14.     switch(uMsg)  
  15.     {  
  16.     case WM_INITDIALOG:  
  17.         return TRUE;  
  1.     case WM_COMMAND:  
  2.         switch(LOWORD(wParam))  
  3.         {  
  4.         case IDOK:  
  5.             if(GetTex(hWnd,key))  
  6.                 return TRUE;  
  7.             else  
  8.             {  
  9.                 MessageBox(NULL,"ÃÜÂë²»ÕýÈ·£¡","",MB_OK);  
  10.                 EndDialog(hWnd,1);  
  11.                 return FALSE;  
  12.             }  
  13.         case IDCANCEL:  
  14.             EndDialog(hWnd,1);  
  15.             return FALSE;  
  16.         }  
  17.     }  
  18.     return FALSE;  
  19. }  
  20.   
  21. void PassWord(HINSTANCE hlnstance)  
  22. {  
  23.     DialogBox(hlnstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,Main_Proc);  
  24. }  

至此,我们所有的工作就完成了,这个win32的项目就可以弹出这个一个输入框,并获得输入内容了。

菜鸟言论,仅供娱乐。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值