如何讓win32 Application顯示輸入框

來源:互聯網
上載者:User

        很多人糾結如何在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控制項中的內容,具體代碼如下,我寫的是一個密碼框的擷取。

BOOL GetTex(HWND hWnd,char key[10]){HWND h;h=GetDlgItem(hWnd,IDC_EDIT1);char temp[255]={0};char c;PostMessage (h,EM_SETPASSWORDCHAR,0,0);//取消密碼屬性Sleep(10);SendMessage(h,WM_GETTEXT,255,(LPARAM)temp);PostMessage (h,EM_SETPASSWORDCHAR,c,0);//恢複密碼屬性
if(!strcmp(key,temp)){MessageBox(NULL,key,"ÃÜÂëÕýÈ·£¡",MB_OK);return TRUE;}elsereturn FALSE;}BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){char key[10]="";//對比密碼switch(uMsg){case WM_INITDIALOG:return TRUE;
case WM_COMMAND:switch(LOWORD(wParam)){case IDOK:if(GetTex(hWnd,key))return TRUE;else{MessageBox(NULL,"ÃÜÂë²»ÕýÈ·£¡","",MB_OK);EndDialog(hWnd,1);return FALSE;}case IDCANCEL:EndDialog(hWnd,1);return FALSE;}}return FALSE;}void PassWord(HINSTANCE hlnstance){DialogBox(hlnstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,Main_Proc);}

至此,我們所有的工作就完成了,這個win32的項目就可以彈出這個一個輸入框,並獲得輸入內容了。

菜鳥言論,僅供娛樂。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.