rainit2006 / C-Program

C# Program knowledge
0 stars 0 forks source link

MFC #33

Open rainit2006 opened 5 years ago

rainit2006 commented 5 years ago

不同版本的VS对MFC的支持不同 Expressには、MFC(Microsoft Foundation Class)と、ATL(Active Template Library)は含まれていません。 ※ MFCとATLは、本サイトでは扱いません。

Visual Studio Communityには、MFC(Microsoft Foundation Class)と、ATL(Active Template Library)が含まれています。

下载

rainit2006 commented 5 years ago

对话框 一般定义自己的对话框类时使用CDialog类作为基类。 https://img-blog.csdn.net/20161004003038583?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

简易对话框: AfxMessageBox(_T("Uploadが失敗しました!"), MB_OK);

rainit2006 commented 5 years ago
rainit2006 commented 5 years ago

ラジオボタン ■入門参照: https://www.tutorialspoint.com/mfc/mfc_radio_buttons.htm

要点: 1,选择一个RadioButton设定group为True即可 2, 不需要添加RadioButton的对应变量。

■ラジオボタンをグループ化するには

A,B,C,Dがラジオボタン EがOKボタンだったとします。 1:タブオーダーを同じグループが連番になるように並べる。 2:タブオーダーの中でグループ内で一番若い番号のプロパティ-Groupをtrueにします。

例) A,BのプロパティをGroup trueにするとグループはAとB,C,Dに分かれます。 A,CのプロパティをGroup trueにするとグループはA,BとC,Dに分かれます。

rainit2006 commented 5 years ago

遭遇的问题: ■问题:发现点击对话框关闭按钮时,对话框不关闭,反而动作和点击OK2按钮时一样。 原因: 怀疑OK2按钮的resource id 和close按钮重合了,重新定义OK2按钮的id就可以解决。

rainit2006 commented 5 years ago

Tab控件 对应 Tab控件(好麻烦啊) 入门参考: http://www.g-ishihara.com/mfc_ta_01.htm

★注意: 自定义的控件ID有时候在编译时会说没有被定义。此时要加上 #includes “resource.h” ★注意: MBARc.rc里的控件ID必须在 resource.h里存在,而且resource.h里ID的定义值不能有冲突。

代码: 头文件里声明:

        CParamTabPage1 m_TabPage_Page1;
    CParamTabPage2 m_TabPage_Page2;
    CParamTabPage3 m_TabPage_Page3;

在OnInitDialog()函数里

         m_tabEVITSParam.InsertItem(0, "Page1");
    m_tabEVITSParam.InsertItem(1, "Page2");
    m_tabEVITSParam.InsertItem(2, "Page3");

    m_TabPage_Page1.Create(IDD_TabPage1, &m_tabEVITSParam);
    m_TabPage_Page2.Create(IDD_TabPage2, &m_tabEVITSParam);
    m_TabPage_Page3.Create(IDD_TabPage3, &m_tabEVITSParam);

    CRect   rect;
    m_tabEVITSParam.GetClientRect(&rect);
    rect.OffsetRect(20, 20);
    m_TabPage_Page1.MoveWindow(&rect, FALSE);
    m_TabPage_Page2.MoveWindow(&rect, FALSE);
    m_TabPage_Page3.MoveWindow(&rect, FALSE);

    OnTcnSelchangeTab(0, 0);

       //初始化控件的值
      CEdit *myED_1 = (CEdit *)m_TabPage_Page1.GetDlgItem(IDC_EDIT1);
    m_valude1 = “某个值”;
    CString temp_Infodata.Format(_T("%f"), m_valude1);
    myED_1->SetWindowText(temp_Infodata);

在函数OnTcnSelchangeTab(NMHDR pNMHDR, LRESULT pResult) 里响应tab页面 的切换

    // TODO: ここにコントロール通知ハンドラー コードを追加します。
    if (pResult) *pResult = 0;

    int     i = m_tabEVITSParam.GetCurSel();
    m_TabPage_Page1.ShowWindow(i == 0 ? SW_SHOW : SW_HIDE);
    m_TabPage_Page2.ShowWindow(i == 1 ? SW_SHOW : SW_HIDE);
    m_TabPage_Page3.ShowWindow(i == 2 ? SW_SHOW : SW_HIDE);
rainit2006 commented 5 years ago

MFC全局函数 https://blog.csdn.net/mimica247706624/article/details/2956262

主要全局函数有: AfxWinInit() AfxBeginThread() AfxEndThread() AfxFormatString1() AfxFormatString2() AfxMessageBox()
AfxOutPutDebugString()
AfxGetApp() AfxGetMainWnd() AfxGetInstance() AfxRegisterClass()