博文
我是初学者(2006-09-24 17:09:00)
摘要:好久就在编程爱好者论坛上混了,但直到昨天才发现里面还有个BLOG功能,真是很高兴.可以随便写了.不过有错误的地方还请多多指正!
期待你的到来!......
SDI中类与类的关系(2006-09-24 16:29:00)
摘要:
这张图也是个高人给我的,感觉有点像什么藏宝图似的.不过仔细一看,可能你真的会发现宝藏:
1. SDI是一中文档视图结构,由于文档视图与框架是相互联系的,彼此都包含了指向对方的指针,所以得有一个东西来管理他们,协调他们.文档模板就是这个作用:
它的构造函数如下:
pDocTemplate (
UINT nIDResouce,CRunTimeClass* pDocClass,CRuntimeClass * pFrameClass,CRuntimeClass* pViewClass);
那么这个对象是什么时候构造的呢?
BOOL CMyApp::InitInstance()
{
AfxEnableControlContainer();
......
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CMyView));
AddDocTemplate(pDocTemplate);
这就是先构造了个文档模板类指针,然后添加到文档模板链表(AddDocTemplate(pDocTemplate);)
2.
在OnNewDocument创建一份文档时,程序会调用很多函数(已经封装),有一个是CSingleDocTemplate::OpenDocumentFile,接着该函数就会调用CreateNewDocument,CreateNewFrame等来创建一个新的文档类对象,框架类对象和视类对象.一起为这份文档服务.
3.CSingleDocTemplate::OpenDocumentFile该函数会被调用的原因就是因为前面创建了单文档模板指针,添加进指针链表中,尔后又被其他......
(转载)VC入门一点体会(2006-09-24 15:37:00)
摘要:转载:白云小飞的BLOG
1。C/C++语法要全面,在学VC时要不断回头看看C/C++语法,因为VCMFC编程充分利用了C/C++方方面面特性,如果对C/C++某方面一知半解都有可能成为你理解上的拦路虎。
2。学习顺序安排如下:
C/C++
-> Win32SDK程序主框架及与Windows相关API编程
-> 理解MFC对话框框架并在此框架下学习编程
-> 专门花时间学习CObject及其相关特性(如运行类识别,动态创建、持久化等等的知识)
->理解单文档框架程序流程并在此框架下学习编程
->理解多文档框架程序流程并在此框架下学习编程
->动态链接库技术
->多线程技术->。。。
3。在学习如上知识的同时还要同步学习和研究程序总体架构设计方面的技巧知识。
4。每一个阶段结束时都应专心完成一个小而完整的软件来,作为这个阶段的总结。这不仅仅学会如何应用所学的语法和局部的知识,还会学会如何从全局架构上去设计,而这一点才会成为我们真正的障碍。
相信对我们班的最有帮助了!......
LoadIcon(2006-09-24 15:23:00)
摘要:我也是vc初学者,但是经常碰到有人问关于LoadIcon的用法,我就随便谈谈它(实际MSDN是最好的老师)
一.在SDK平台上,它的原型是:
HICON LoadIcon(HINSTANCE hInstance,LPCTSTR lpIconName);
1.函数说明:
该函数从与hInstance模块相关联的可执行文件中装入lpIconName指定的图标资源,仅当图标资源还没有被装入时该函数才执行装入操作,否则只获取装入的资源句柄
2.参数说明:lpIconName是指向NULL字符结尾的字符串的指针,它包含图标名.如果要使用windows预定义的图标,这是hInstance必须设置成NULL,lpIconName则可以是下列值:
IDI_APPLICATION:32512 IDI_QUESTION:332514
IDI_HAND:32513 IDI_EXCLAMATION:32515
IDI_ASTERISK :32516 IDI_WINLOGO:32517
可以用下面这个对话框来浏览图标
void CMyDlg::OnButton1()
{
// TODO: Add your control notification handler code here
static int i=0;
m_static1.ModifyStyle(0,SS_ICON);//m_static1是一个静态文本的关联变量
m_static1.SetIcon(::LoadIcon(NULL,(LPCTSTR)(32512+i)));
i++;
if(i>=6)
......