MFCコントロール使用説明(combo box Button Check Box Radio Button List Control Edit Box Hot Key IP Address....)



combo boxコントロールの使い方:
ドロップダウンしてコントロールを選択し、まずコントロールを使用する必要がある場所にドラッグし、ClassWizardで変数を関連付けます.変数タイプはCString型であることに気づきました.属性を右クリックすると、Generalでは一般属性クラス容量Dataを設定できます.このコントロールのドロップダウンで選択した内容を設定できます.Stylesではcombo boxコントロールスタイルを設定し、Extended Stylesでは拡張スタイルを設定します.主な設定はDataで、Dataではドロップダウンメニューのすべてのドロップダウン内容を図のように設定します.
データ内の各行はドロップダウンメニューの1行として扱われ、改行はCtrl+Enterで行うことに注意してください.
[OK]ボタンでメッセージ応答関数を追加します.
UpdateData(TRUE);
char *   sz   =   m_nihao.GetBuffer(m_nihao.GetLength());
MessageBox(sz,"ss",MB_OK);

 
Button:
ボタンコントロールは最も簡単なコントロールで、ボタンを表示するところまでドラッグして、属性設定ボタンのID、名前を右クリックして、SetDlgItemTextを使ってボタンのテキストを設定することもできます.ドラッグしたボタンをダブルクリックしてボタンにメッセージ応答関数を追加すればいいです.ボタンをクリックしてボタンのテキストの変更を実現する方法を実現するには、直接メッセージ応答関数にSetDlgItemText関数を追加すればいいです.ボタンをクリックすると、ボタンのテキストが変更されます.
         int ret;
	UpdateData(TRUE);
	SetDlgItemText(IDOK," ");
	char *   sz   =   m_nihao.GetBuffer(m_nihao.GetLength());
	ret=MessageBox(sz,"ss",MB_OK);
	if (ret==IDOK)
	{
		SetDlgItemText(IDOK," ");
	}

 
 
Check Boxコントロール:
Check Boxコントロールは複数選択のコントロールで、まずCheck Boxコントロールをユーザーインタフェースに追加し、ClassWizardで変数を関連付けたとき、このコントロールの変数タイプがBOOL型変数であることを発見しました.では、私たちは基本的にこのコントロールの使い方を理解しました.このコントロールが押されているかどうかを確認する簡単な方法は、このコントロールの仮想変数値がTRUEなのかFLASEなのかを判断することです.しかし、まずUpdateData(TRUE)が必要である.
では、OnOKボタンにメッセージ応答関数を追加します.
UpdateData(TRUE);
if (m_check==TRUE)
{MessageBox("Check Box ",NULL,MB_OK);}

私たちの機能を実現することができます.
 
 
Radio Button:
このボタンの実現の目的はCheck Boxとあまり差がないが、異なるのはCheck Boxコントロールが最終的に私たちが実行する必要があるメッセージ応答関数の中でこのオプションが選択されているかどうかを検査することである.Radio Buttonは押した後、インタフェースはすぐに応答し、このボタンのメッセージ応答関数を実行するので、このコントロールは仮想変数ではなく、このコントロールに直接メッセージ応答イベントを追加し、ボタンの追加方法と同じである.余計なことは言わない.
 
 
List Control:
List Controlというコントロールは面白いです.私はこのコントロールに対しても少ないです.ここでは1つの使用方法しか提供していません.ここでは私が作ったネットワーク嗅覚器を例に挙げます.
ここでは***で工事名を表します.例えばsnifferです.
まず、コントロールを使用する必要がある場所にドラッグし、ClassWizardを開き、変数(m_CtrList.そして***Dlgを見つけます.cppファイル、ダイアログボックス関数(ドキュメントエンジニアリングは異なるかもしれませんが、すべてメインウィンドウ関数)BOOL C***Dlg::OnInitDialog()に次のコードを追加してスペーススタイルを設定します.
	DWORD dwStyle=GetWindowLong(m_CtrList.GetSafeHwnd(),GWL_STYLE);                 
	dwStyle&=~LVS_TYPEMASK;
	dwStyle|=LVS_REPORT;
	SetWindowLong(m_CtrList.GetSafeHwnd(),GWL_STYLE,dwStyle);

最後に、入力するカラム名を挿入します.
m_CtrList.InsertColumn(0," ",LVCFMT_LEFT,525);
    m_CtrList.InsertColumn(0," ",LVCFMT_LEFT,60);
	m_CtrList.InsertColumn(0," ",LVCFMT_LEFT,50);
	m_CtrList.InsertColumn(0," ",LVCFMT_LEFT,40);
	m_CtrList.InsertColumn(0," IP ",LVCFMT_LEFT,100);
	m_CtrList.InsertColumn(0," IP ",LVCFMT_LEFT,100);    

この基本的なコントロールは設定されています.次に、出力するテキストを表示する方法を説明します.
各列のデータがS[3]、port 1、port 2、dateの順に文字列であると仮定する
	index=m_CtrList.InsertItem(0,s1);// 
	m_CtrList.SetItemText(index,1,s2);
	m_CtrList.SetItemText(index,2,s3);
	m_CtrList.SetItemText(index,3,port1);
	m_CtrList.SetItemText(index,4,port2);
	m_CtrList.SetItemText(index,5,date);

これで正しいテキストが表示されます.
 
 
Edit Box:
このコントロールはMFCの主な入力コントロールで、英語名からわかります.
このコントロールの使用もかなり简単で、マウスでコントロールをドラッグして使いたいところまで行って、ClassWizardを开いてその関连する仮想変数にして、関连する时この変数のタイプを选ぶことができて、INT、CString、UINTがあります..などN種類以上あり、ほとんどすべての共通変数タイプをカバーしています.変数を関連付けて使用できます.
	UpdateData(TRUE);
	char *   sz   =m_edit.GetBuffer(m_edit.GetLength());
	MessageBox(sz,"ss",MB_OK);

また、Edit Boxコントロールでいくつかのコンテンツを出力することもできます.出力するコンテンツをこのコントロールの関連変数に直接割り当てるだけで、最後にデータをリフレッシュできます.
void CAaDlg::OnOK() 
{
	// TODO: Add extra validation here
	m_edit=" ";
	UpdateData(FALSE);// UpdateData FALSE, , MSDN
}

 

 
 
Process:
プログレスバーコントロールも一般的なコントロールです.プログレスバーをインタフェースにドラッグすると、メッセージ応答関数を追加します.メッセージ応答関数のタイプはCProcessctrlで、MSDNを検索することで、マイクロソフトは多くのプログレスバー関数を提供しています.最もよく使われるのは3つの関数です.
SetRangeプログレスバーの最大最小値の設定
SetStepプログレスバーステップの設定
Step Itステップを追加
プログレスバーのスタイルについては、プログレスバーのプロパティ設定を右クリックするか、CProcessctrlクラスのメンバー関数をクリックします.
まず、List Boxコントロールと同様に、C***Dlg::OnInitDialog()関数に進捗バーの最大最小値や、ステップ長など、進捗バースタイルなど、必要な属性を設定する必要があります.
次に、必要に応じてステップを増やします.上のネットワーク嗅覚器を例に挙げると、500回ループし、500個のネットワークパケットを嗅ぎます.では、進捗バーの最小値を0最大値500、ステップ長を1に設定します.ループごとにステップを1回増やせばいいのです.これはよく理解できます.
C***Dlg::OnInitDialog() :
m_process.SetRange(0,500);// 
m_process.SetStep(1);// 

ループ・セクションには、次のコードが追加されます.
各サイクルでm_process.StepIt();
 
 
Hot Key:
ホットキーはMFCの中で非常に重要なコントロールの一つであり、ホットキーは簡単に1つ以上の組み合わせキーのホットキーを実現することができ、ホットキーがなければ、ダイナミックリンクライブラリdllや他のグローバルフックの方法でホットキー機能を実現するにはかなり面倒で、数え切れないほど多くの組み合わせキーのホットキーを解決するのは難しいので、ホットキーをマスターすることは私たちに多くのことを助けることができます.
MFCパッケージのホットキーは、プログラミングもかなり簡単です.手順は、ホットキーの入力->ホットキーの登録->メッセージマッピングの記入->ホットキー応答関数の記入です.ここには2つの小さな詳細があります.
1.資料によると、ホットキーを登録した後、RegisterHotKeyメソッドで実現されたホットキーと書かれた2つの方法でホットキーを実現する.
2.インターネット上の資料によると、MFCのホットキーのマクロ定義とAPI関数RegisterHotKeyのマクロ定義には誤差があり、これはBUGであり、CTRLとShiftキーが逆転したが、残念ながら私はプログラムを書くときにこのような状況に遭遇しなかったし、妄論もできなかった.
Hot Keyコントロールの使用方法を見てみましょう.
1.まず、手順に従ってホットキーを入力します.
設定したい場所にHot Keyコントロールをドラッグし、ClassWizardでm_などの変数を関連付けます.Hotkey、これで入力したホットキーを受け取ることができます.
2.ホットキーの登録:
このステップの目的は、ウィンドウにホットキーを登録し、ホットキーが来たときにウィンドウにWM_を送信することです.HOTKEYのメッセージ.「登録」ボタンのメッセージ応答関数に、次のコードを追加します.
	WORD virtualcode,modifiers;
	m_Hotkey.GetHotKey(virtualcode,modifiers);            // 
	if (!RegisterHotKey(this->m_hWnd,100,modifiers,virtualcode))     // 
	{
		MessageBox(" "," ",MB_OK);
	}
	else
		MessageBox(" "," ",MB_OK);

3.メッセージ・マッピングの入力:
ここまで来ると、私たちのホットキーは登録に成功しましたが、私たちがホットキーを押したとき、反応しませんでした.私たちはコンピュータにホットキーを押してから何をしているのか教えてくれなかったからです.MFCはメッセージ駆動に基づくフレームワークコードである.だから私たちは私たちのためにWMを受け取ります.HOTKEYのウィンドウにメッセージマッピングを追加し、ウィンドウがWM_を受信するとHOTKEYメッセージの場合はホットキー関数を実行できます.ClassWizardを開く
我々はその中でWMを発見しなかったHOTKEYニュースによると、マイクロソフトは私たちのためにパッケージされていないので、私たちは自分で手を出すしかありません.
*Dlgでcppファイルには、次のコードがあります.
BEGIN_MESSAGE_MAP(CMFCHotKeyDlg, CDialog)
	//{{AFX_MSG_MAP(CMFCHotKeyDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDOK, OnSet)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

これはMFCがカスタマイズしたメッセージマッピング処理コードで、ON_を追加します.MESSAGE(WM_HOTKEY,MyHotKey)は、こちらのMyHotKeyは、私たちが定義する必要があるカスタムホットキー処理関数です.
4.ホットキー応答関数を記入する:
**Dlgが見つかりました.hのヘッダファイル、ウィンドウクラスのprotectedにメッセージ応答関数を追加してafx_を宣言するmsg void MyHotKey(WPARAM wp,LPARAM lp);
それからまた*Dlg.cppファイルにメッセージ応答関数の定義を追加するには:
void CMFCHotKeyDlg::MyHotKey(WPARAM wp,LPARAM lp)
{
	MessageBox(" ","SUCCESS",MB_OK);
}

これで基本的にいいです.
 
 
IP Address:
IPコントロールもよく使われるコントロールの一つであり、最も簡単なコントロールでもあり、MFCのパッケージは文字列の処理にほかならない.使い勝手もかなり簡単です.
まず、コントロールを指定した場所にドラッグし、ClassWizardで変数を関連付けます.変数のタイプは任意にクラス、IPAddressCtrlのクラスであることがわかります.次に、いくつかの一般的な操作を説明します.
1,IPアドレスをIpコントロール表示に出力:わずか2行のコードしか必要とせず、表示するIPアドレスが192.168.1.1であると仮定すると、決定されたメッセージに対応する関数が追加される
	CString a="192.168.1.1";
	m_ip.SetWindowText(a);

 
2.IPアドレスをプログラムに入力する:
	BYTE a1,a2,a3,a4;
	m_ip.GetAddress(a1,a2,a3,a4);
	CString str;
	str.Format("%d.%d.%d.%d",a1,a2,a3,a4);// nf IP .
	MessageBox(str);