第七章 控件 windows程序设计王艳平版
// PredefineClass.h文件
#define IDC_BUTTON 10 // Button按鈕
#define IDC_RADIO 11 // 單選框
#define IDC_CHECKBOX 12 // 復選框
#define IDC_STATIC 13 // 靜態文本
#define IDC_EDITTEXT 14 // 文本框
#include "afxwin.h"
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWindow : public CWnd
{
public:
CMainWindow();
protected:
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
virtual void PostNcDestroy();
afx_msg BOOL OnCreate(LPCREATESTRUCT);
DECLARE_MESSAGE_MAP()
};
CPP文件
// PredefineClass.cpp
#include "PredefineClass.h"
CMyApp theApp;
///
BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow(m_nCmdShow);
return TRUE;
}
CMainWindow::CMainWindow()
{
LPCTSTR lpszClassName = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,?
::LoadCursor(NULL, IDC_ARROW), (HBRUSH)(COLOR_3DFACE+1));
CreateEx(WS_EX_CLIENTEDGE, lpszClassName,?
"框架程序創建的窗口", WS_OVERLAPPEDWINDOW,?
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL);
}
BEGIN_MESSAGE_MAP(CMainWindow, CWnd)
ON_WM_CREATE()
END_MESSAGE_MAP()
void CMainWindow::PostNcDestroy()
{
delete this;
}
BOOL CMainWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// 創建三個不同風格的按鈕
::CreateWindowEx(0, "button", "push button", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
50, 30, 110, 30, m_hWnd, (HMENU)IDC_BUTTON, AfxGetApp()->m_hInstance, NULL);
::CreateWindowEx(0, "button", "radio button", WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,
50, 70, 110, 30, m_hWnd, (HMENU)IDC_RADIO, AfxGetApp()->m_hInstance, NULL);
::CreateWindowEx(0, "button", "check box", WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,
50, 110, 110, 30, m_hWnd, (HMENU)IDC_CHECKBOX, AfxGetApp()->m_hInstance, NULL);
// 創建靜態文本
::CreateWindowEx(0, "static", "static text", WS_CHILD|WS_VISIBLE|SS_SUNKEN,
50, 150, 150, 60, m_hWnd, (HMENU)IDC_STATIC, AfxGetApp()->m_hInstance, NULL);
// 創建文本框
::CreateWindowEx(0, "edit", "edit text", WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE,
50, 220, 150, 60, m_hWnd, (HMENU)IDC_EDITTEXT, AfxGetApp()->m_hInstance, NULL);
return TRUE;
}
BOOL CMainWindow::OnCommand(WPARAM wParam, LPARAM lParam)
{
switch(LOWORD(wParam))
{
case IDC_BUTTON:
::MessageBox(m_hWnd, "大家好!", "Button", MB_OK);
break;
case IDC_RADIO:
{
// 是否選中單選按鈕
BOOL bChecked = ::IsDlgButtonChecked(m_hWnd, IDC_RADIO);
// 設置上面的button有效狀態
::EnableWindow(::GetDlgItem(m_hWnd, IDC_BUTTON), bChecked);
// 設置本控件狀態
::CheckDlgButton(m_hWnd, IDC_RADIO, !bChecked);
}
break;
case IDC_EDITTEXT:
{
// 如果是改變文本框中的文本,則在靜態文本框中也做相應的修改
if(HIWORD(wParam) == EN_CHANGE)
{
char sz[256];
::GetWindowText(::GetDlgItem(m_hWnd, IDC_EDITTEXT), sz, 256);
::SetWindowText(::GetDlgItem(m_hWnd, IDC_STATIC), sz);
}
}
break;
}
return 0;
}
總結
以上是生活随笔為你收集整理的第七章 控件 windows程序设计王艳平版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (抗震支架安装方法)管廊内抗震支架的安装
- 下一篇: 和阿文一起学H5——如何搜到超酷的GIF