这本书第一章就是讲Windows程序内部运行机制,初看的话比较吃力,不过理解了之后对后面还是有一定的帮助。对窗口的设计,
注册,创建,显示及更新讲的很详细具体。
私觉得句柄这个概念一定要好好理解,在之后会经常用到。
记录一下最基本的得到某窗口的句柄。虽说主窗口和子窗口有不同的方法,不过更喜欢这个简单,通用。
CWnd* pWnd=FindWindow(NULL,_T("标题"));
ID或标题有一个就可以。
之后对C++面向对象部分的讲解从结构体引进类讲的挺不错后面重载,虚函数部分就有点冗杂。
这本书主要中心还是放在了Window编程,从MFC的框架,到绘图,文本,文件,和后面相对高级的多线程,网络编程,ActiveX控件。目前也是刚看完前面关于MFC的部分,MFC封装了大部分的windows API函数,在理解的基础上还是要大量接触各种函数,可以从基本控件的使用开始,下面是一些基础控件。(题外:在创建新的MFC AppWzard{exe}工程时对于MFC库的静态,动态的选择,一般为了节约编译时间选动态,不过有时编译时会提醒电脑上缺少一些文件,在不想再去下载那些dll文件的情况下可以选成静态)
MFC部分也是才略微接触,还没什么感触。列举遇到的一些问题和解决方法 。
背景图片和位图按钮的设置
BOOL CMANAMENU::OnInitDialog()
{
CDialog::OnInitDialog();
CBitmap bmp;
bmp.LoadBitmap(IDC_PIC2); //图片ID
m_brush.CreatePatternBrush(&bmp);
HINSTANCE hInstance;
HBITMAP hBitmap2,hBitmap3;
hInstance = ::AfxGetInstanceHandle();
hBitmap2 = ::LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BUTTON3) );
hBitmap3 = ::LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BUTTON4) );
m_BtonBmp.SetBitmap(hBitmap2);
m_color.SetBitmap(hBitmap3);
return TRUE; // return TRUE unless you set the focus to a control
}
子窗口出现主窗口隐藏因为主窗口仅仅是隐藏,
void CMODlg::OnButton1()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT1)->GetWindowText(m_E1);
ShowWindow(SW_HIDE);
if(m_E1=="ADMIN"||m_E1=="admin"){
CMANAMENU *menu=new CMANAMENU;
//跳转到管理员主界面
menu->Create(IDD_MANAMENU,this);
menu->ShowWindow(SW_SHOW);
}
else{
CCUSTOMER_MAIN *menu=new CCUSTOMER_MAIN;
//跳转到用户主界面
menu->Create(IDD_CUSTOM_MAIN,this);
menu->ShowWindow(SW_SHOW);
}
GetDlgItem(IDC_EDIT1)->SetWindowText("");
}
关闭子窗口时添加ONCLOSE事件关闭主窗口
void CMANAMENU::OnClose()
{
// TODO: Add your message handler code here and/or call default
CWnd* pWnd=FindWindow(NULL,_T("RED TREE影院"));
::SendMessage(pWnd->m_hWnd,WM_CLOSE,NULL,NULL);
CDialog::OnClose();
}