对话框按钮简单使用实例

需要先添加对话框,并且修改确定按钮的ID值

  
  
  
  
  1. .h文件  
  2.  
  3. struct DecodeUint{  
  4.  UINT meesage;  
  5.  LONG (*fun)(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);  
  6. };  
  7.  
  8. #define dim(x) (sizeof(x)/sizeof(x[0]))  
  9.  
  10. LONG OnInit(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);  
  11. LONG OnCommand(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);  
  12. LONG OnClose(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);  
  13. LONG OnBtnClick(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);  
  14.  
  15. BOOL CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);  
  16.  

 

  
  
  
  
  1. .c文件  
  2.  
  3. #include <windows.h>  
  4. #include <windowsx.h>  
  5. #include <CommCtrl.h>  
  6. #include <wingdi.h>  
  7. #include "Border.h"  
  8. #include "resource.h"  
  9.  
  10. struct DecodeUint DlgMessage[] = {  
  11.  WM_INITDIALOG,OnInit,  
  12.  WM_COMMAND,OnCommand,  
  13. };  
  14.  
  15. struct DecodeUint DlgCommand[] = {  
  16.  IDBTN,OnBtnClick,  
  17.  IDCANCEL,OnClose,  
  18. };  
  19.  
  20. HINSTANCE g_hInst;  
  21. HWND hStatic;  
  22.  
  23. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);  
  24.  
  25. int WinMain(HINSTANCE hInstance,  
  26.    HINSTANCE hPrevInstance,  
  27.    LPTSTR    lpCmdLine,  
  28.    int       nCmdShow)  
  29. {  
  30.  g_hInst = hInstance;  
  31.  DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,About);  
  32.  return 1;  
  33. }  
  34.  
  35. BOOL CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)  
  36. {  
  37.     for (int i = 0;i < dim(DlgMessage);i ++)  
  38.     {  
  39.   if (DlgMessage[i].meesage == message)  
  40.   {  
  41.    (*DlgMessage[i].fun)(hDlg,message,wParam,lParam);  
  42.   }  
  43.     }  
  44.  return FALSE;  
  45. }  
  46.  
  47. LONG OnCommand(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)  
  48. {  
  49.  for (int i = 0;i < dim(DlgCommand);i ++)  
  50.  {  
  51.   if (DlgCommand[i].meesage == LOWORD(wParam))  
  52.   {  
  53.    (*DlgCommand[i].fun)(hDlg,message,wParam,lParam);  
  54.   }  
  55.  }  
  56.  
  57.  return TRUE;  
  58. }  
  59.  
  60. LONG OnInit(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)  
  61. {  
  62.  hStatic = CreateWindow(TEXT("static"),TEXT("static text"),WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER | SS_CENTERIMAGE,  
  63.   10,10,200,200,hDlg,(HMENU)101,g_hInst,NULL);  
  64.  return TRUE;  
  65. }  
  66.  
  67. LONG OnClose(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)  
  68. {  
  69.  EndDialog(hDlg,0);  
  70.  return TRUE;  
  71. }  
  72.  
  73. LONG OnBtnClick(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)  
  74. {  
  75.  //1 获取文本内容 修改对话框标题  
  76.  //TCHAR * pc;  
  77.  //int count = Static_GetTextLength(hStatic);  
  78.  //pc = new TCHAR[count+1];  
  79.  //Static_GetText(hStatic,pc,count+1);  
  80.  //SetWindowText(hDlg,pc);  
  81.  //delete pc;  
  82.    
  83.  //2 设置按钮不可用  
  84.  Button_Enable(GetDlgItem(hDlg,IDCANCEL),FALSE);  
  85.  return 0;  
  86. }  

 

你可能感兴趣的:(内容对话框)