MFC 窗体控件选择的问题

原创 2013年12月02日 14:37:46

////设置 CheckBox  为 选择状态
BOOL COpenBurnIntestDlg::SelectCheckbox(HWND hWin, INTwidgetId)
{
 HWND hCheckbox =::GetDlgItem(hWin,widgetId);
 if( hCheckbox )
 {
  ::SendMessage( hCheckbox,BM_SETCHECK, true, 0 );
  return true;
 }

 return false;
}

void COpenBurnIntestDlg::InitWidgetInfo()
{
 m_minutes.SetCheckboxId(WIDGET_MINUTES_CHECKBOXID);
 m_minutes.SetEditId(WIDGET_MINUTES_EDITID);
 m_minutes.SetName(WIDGET_MINUTES_NAME);
 m_minutes.SetXmlMark(WIDGET_MINUTES_XML);

 m_cycles.SetCheckboxId(WIDGET_CYCLES_CHECKBOXID);
 m_cycles.SetEditId(WIDGET_CYCLES_EDITID);
 m_cycles.SetName(WIDGET_CYCLES_NAME);
 m_cycles.SetXmlMark(WIDGET_CYCLES_XML);

 m_CPU.SetCheckboxId(WIDGET_CPU_CHECKBOXID);
 m_CPU.SetEditId(WIDGET_CPU_EDITID);
 m_CPU.SetName(WIDGET_CPU_NAME);
 m_CPU.SetXmlMark(WIDGET_CPU_XML);

 m_opticalDrives.SetCheckboxId(WIDGET_OPTICALDRIVE_CHECKBOXID);
 m_opticalDrives.SetEditId(WIDGET_OPTICALDRIVE_EDITID);
 m_opticalDrives.SetName(WIDGET_OPTICALDRIVE_NAME);
 m_opticalDrives.SetXmlMark(WIDGET_OPTICALDRIVE_XML);

 m_printer.SetCheckboxId(WIDGET_PRINTER_CHECKBOXID);
 m_printer.SetEditId(WIDGET_PRINTER_EDITID);
 m_printer.SetName(WIDGET_PRINTER_NAME);
 m_printer.SetXmlMark(WIDGET_PRINTER_XML);

 m_RAM.SetCheckboxId(WIDGET_RAM_CHECKBOXID);
 m_RAM.SetEditId(WIDGET_RAM_EDITID);
 m_RAM.SetName(WIDGET_RAM_NAME);
 m_RAM.SetXmlMark(WIDGET_RAM_XML);

 m_COMPort.SetCheckboxId(WIDGET_COMPORT_CHECKBOXID);
 m_COMPort.SetEditId(WIDGET_COMPORT_EDITID);
 m_COMPort.SetName(WIDGET_COMPORT_NAME);
 m_COMPort.SetXmlMark(WIDGET_COMPORT_XML);

 m_tape.SetCheckboxId(WIDGET_TAPE_CHECKBOXID);
 m_tape.SetEditId(WIDGET_TAPE_EDITID);
 m_tape.SetName(WIDGET_TAPE_NAME);
 m_tape.SetXmlMark(WIDGET_TAPE_XML);

 m_video.SetCheckboxId(WIDGET_VIDEO_CHECKBOXID);
 m_video.SetEditId(WIDGET_VIDEO_EDITID);
 m_video.SetName(WIDGET_VIDEO_NAME);
 m_video.SetXmlMark(WIDGET_VIDEO_XML);

 m_plugIn.SetCheckboxId(WIDGET_PLUGIN_CHECKBOXID);
 m_plugIn.SetEditId(WIDGET_PLUGIN_EDITID);
 m_plugIn.SetName(WIDGET_PLUGIN_NAME);
 m_plugIn.SetXmlMark(WIDGET_PLUGIN_XML);

 m_2DGraphics.SetCheckboxId(WIDGET_2DGRAPHICS_CHECKBOXID);
 m_2DGraphics.SetEditId(WIDGET_2DGRAPHICS_EDITID);
 m_2DGraphics.SetName(WIDGET_2DGRAPHICS_NAME);
 m_2DGraphics.SetXmlMark(WIDGET_2DGRAPHICS_XML);

 m_3DGraphics.SetCheckboxId(WIDGET_3DGRAPHICS_CHECKBOXID);
 m_3DGraphics.SetEditId(WIDGET_3DGRAPHICS_EDITID);
 m_3DGraphics.SetName(WIDGET_3DGRAPHICS_NAME);
 m_3DGraphics.SetXmlMark(WIDGET_3DGRAPHICS_XML);

 m_disks.SetCheckboxId(WIDGET_DISK_CHECKBOXID);
 m_disks.SetEditId(WIDGET_DISK_EDITID);
 m_disks.SetName(WIDGET_DISK_NAME);
 m_disks.SetXmlMark(WIDGET_DISK_XML);

 m_sound.SetCheckboxId(WIDGET_SOUND_CHECKBOXID);
 m_sound.SetEditId(WIDGET_SOUND_EDITID);
 m_sound.SetName(WIDGET_SOUND_NAME);
 m_sound.SetXmlMark(WIDGET_SOUND_XML);

 m_network.SetCheckboxId(WIDGET_NETWORK_CHECKBOXID);
 m_network.SetEditId(WIDGET_NETWORK_EDITID);
 m_network.SetName(WIDGET_NETWORK_NAME);
 m_network.SetXmlMark(WIDGET_NETWORK_XML);

 m_parallelPort.SetCheckboxId(WIDGET_PARALLELPORT_CHECKBOXID);
 m_parallelPort.SetEditId(WIDGET_PARALLELPORT_EDITID);
 m_parallelPort.SetName(WIDGET_PARALLELPORT_NAME);
 m_parallelPort.SetXmlMark(WIDGET_PARALLELPORT_XML);

 m_USB.SetCheckboxId(WIDGET_USB_CHECKBOXID);
 m_USB.SetEditId(WIDGET_USB_EDITID);
 m_USB.SetName(WIDGET_USB_NAME);
 m_USB.SetXmlMark(WIDGET_USB_XML);

 //加载多语言  "确定"按钮
 if( NULL == m_ptrButtonOK )
 {
  m_ptrButtonOK = newWCHAR[MAX_PATH];
  LoadString(NULL,OBIT_IDS_BUTTON_OK, m_ptrButtonOK, MAX_PATH );
 }

 if( NULL == m_ptrButtonYes )
 {
  m_ptrButtonYes = newWCHAR[MAX_PATH];
  LoadString(NULL,OBIT_IDS_BUTTON_YES, m_ptrButtonYes, MAX_PATH );
 }
}

BOOL COpenBurnIntestDlg::SetWidget( CMyWidget& widget,CXmlNodeWrapper xml, HWND hWin )
{
 CXmlNodeWrapper xmlNode = xml.GetNode(widget.GetXmlMark() );
 if( xmlNode.IsValid() && SelectCheckbox(hWin, widget.GetCheckboxId()) )
 {
  Sleep(200);
  //设置文本数值
  CString strText =xmlNode.GetText();
  HWND hWinEdit = ::GetDlgItem(hWin, widget.GetEditId() );

  if( hWinEdit )
  {
   if(strText.IsEmpty() )
   {
    strText= _T("100");
    ::SendMessage(hWinEdit,WM_SETTEXT,strText.GetLength(),(LPARAM)strText.GetBuffer()); 
   }
   else
   {
    ::SendMessage(hWinEdit,WM_SETTEXT,strText.GetLength(),(LPARAM)strText.GetBuffer()); 
   }

   returntrue;
  }
 }
 
 return false;
}

BOOL COpenBurnIntestDlg::SelectToolBarItem(HWND hWin , INTindex)
{
 if(hWin)
 {
  HWND hToolBar =::FindWindowEx(hWin,NULL,_T("ToolbarWindow32"),NULL);
  if (hToolBar)
  {
   CToolbarmyToolBar;
   myToolBar.SetCtrlAction(hToolBar,index);
   returntrue;
  }
 }

 return false;
}


BOOL COpenBurnIntestDlg::SetTestPreferencesDisk( HWND hParents)
{
 //先 打开工具条 的 第 5 个
 if( !SelectToolBarItem( hParents,TOOLBAR_TEST_SET_TEST_PREFERENCES) )
 {
  return false;
 }
  
 Sleep(1000);
 //BurnInTest Preferences
 HWND preferences = ::FindWindow(NULL,WINDOW_TITLE_SET_TEST_PREFERENCES);
 if( !preferences )
 {
  return false;
 }
 
 if( !SelectTab(preferences,TAB_DISK_MAJOR_DIFFERENCE, TAB_DISK_MINOR_DIFFERENCE ) )
 {
  ClickButton(WINDOW_TITLE_SET_TEST_PREFERENCES, m_ptrButtonOK );
  returnfalse;  
 }

 ClickButton(WINDOW_TITLE_SET_TEST_PREFERENCES, m_ptrButtonOK );
 return true;
}


BOOL COpenBurnIntestDlg::SelectTab( HWND hWin, CStringlpMajorTarget, CString lpMinorTarget )
{
 HWND hTab = ::FindWindowEx( hWin, NULL,_T("SysTabControl32"), NULL );
 if( !hTab )
 {
  return false;
 }

 INT count = TabCtrl_GetItemCount(hTab);
 for(INT i=0; i
 {
  TABCONTROL_SETCURFOCUS(hTab,i);
  Sleep(1000);
  HWND hChildren =::FindWindowEx(hWin, NULL, NULL, _T("Test Preferences"));
  if( hChildren )
  {
   if(::FindWindowEx(hChildren, NULL, NULL, lpMajorTarget ) )
   {
    HWNDbutton = ::FindWindowEx(hChildren, NULL, NULL, lpMinorTarget);
    if(button )
    {
     ::SendMessage(button,BM_SETCHECK, true, 0);
     returntrue;
    }
   }

  }
 }

 return false;
}

MFC 对话框程序控件局部刷新方法!

控件透明,局部刷新,VC6.0,vs2010
  • zhongqiangyaming
  • zhongqiangyaming
  • 2016年09月30日 10:36
  • 3621

MFC 所有控件随窗口大小自适应

MFC中当我们添加了很多控件后,布局就是一个很难控制的方面,当程序运行在不能的PC上就会有不一样的布局,如何解决呢方法很多,我第一次是自己算出控件的位置,然后按照比例缩放,但是方法很麻烦,还不易控制,...
  • u012580994
  • u012580994
  • 2014年10月09日 17:32
  • 3052

MFC控件自适应窗口大小类

AutoAdapt.h #pragma once class CAutoAdapt { public: CAutoAdapt(void); virtual ~CAutoAdapt(void); ...
  • zhuhuibeishadiao
  • zhuhuibeishadiao
  • 2016年05月06日 20:52
  • 835

关于MFC将一个窗体嵌入另一个窗体的方法

 将一个窗体嵌入另一个窗体,也就是相当于把一个
  • zedyqer
  • zedyqer
  • 2014年08月27日 13:17
  • 2392

MFC中使用日期控件设置,获取日期时间

日期时间控件为用户输入或选择特定日期提供了直观简洁的方法,
  • u011619422
  • u011619422
  • 2014年11月20日 12:43
  • 5228

VC++ 2010下的MFC应用程序与Windows窗体应用程序的区别

VC++ 2010下的MFC应用程序与Windows窗体应用程序的区别 (2013-07-02 03:01:47)   分类:IT业界声音·观点 2010下...
  • hutao1101175783
  • hutao1101175783
  • 2014年06月13日 16:00
  • 2713

MFC 控件下拉选择和输入的 ComboBox使用

学习笔记
  • fzuim
  • fzuim
  • 2015年09月10日 09:18
  • 1949

MFC中Edit控件显示系统时间

1 CString str; GetDlgItem(IDC_EDIT1)->GetWindowText(str); MessageBox(str); 2 ...
  • Gerald_Jones
  • Gerald_Jones
  • 2015年12月09日 16:08
  • 1213

在MFC中怎么样让控件的大小随着主窗体大小改变而改变

MFC控件随着窗口大小变化VC++ 刚接触MFC不久,对MFC的许多函数和功能还不是很了解。所以,在仿照书本开发一个仿QQ的通讯程序的时候,就碰到了一个怎么样使控件随着窗体变化的问题。好了,废话...
  • business122
  • business122
  • 2013年09月12日 17:14
  • 9572

vs2010MFC选择文件对话框,选择目录对话框

选择文件对话框: 第四个参数 dwFlags为对话框风格,一般为OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 即隐藏只读选项和覆盖已有文件前提示。 ...
  • u012702039
  • u012702039
  • 2014年01月13日 22:16
  • 2231
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC 窗体控件选择的问题
举报原因:
原因补充:

(最多只允许输入30个字)