MFC 注意事项

作者在 2008-10-23 22:39:36 发布以下内容
    wndcls.lpszClassName="Weixin2003";
    wndcls.lpszMenuName=NULL;
    wndcls.style=CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&wndcls);

    HWND hwnd;
    hwnd=CreateWindow("Weixin2003","北京维新科学技术培训中心",WS_OVERLAPPEDWINDOW,
        0,0,600,400,NULL,NULL,hInstance,NULL);
即这里的 窗口名 Weixin2003 所依附的窗口类必须由  RegisterClass(&wndcls); 注册,而不能是一个随便的名称

最后个参数
NULL 是在多文档时使用,是WC_CREATE消息的其中一个附件信息 lPwarm
MFC | 阅读 5780 次
文章评论,共6条
vfdff(作者)
2008-10-23 22:43
1
程序中 左上角为原点,右X,下Y<br />
而数学中,左下角为原点,右X,上Y
vfdff(作者)
2008-10-23 22:59
2
BOOL GetMessage(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPMSG lpMsg,<br />
&nbsp;&nbsp;&nbsp; HWND hWnd,<br />
&nbsp;&nbsp;&nbsp; UINT wMsgFilterMin,<br />
&nbsp;&nbsp;&nbsp; UINT wMsgFilterMax<br />
);<br />
&nbsp;&nbsp;&nbsp; UINT wMsgFilterMin,UINT wMsgFilterMax 用于过滤我们关心的消息,当均设置成0,则表示不进行过滤hWnd[in] Handle to the window whose messages are to be retrieved. 以备 calling thread 处理<br />
<br />
只要消息队列不为空,则GetMessage(&amp;msg,NULL,0,0)一直返回真<br />
<br />
GetMessage(&amp;msg,NULL,0,0)接收特定的消息(只有光标落在窗口上的消息才是有效的消息,并在其中选择特定的消息)<br />
TranslateMessage(&amp;msg);将收到用户操作(特定消息)转化成消息(回调函数处理的消息)放到消息队列中<br />
DispatchMessage(&amp;msg);把消息队列中的消息分发给操作系统,然后操作系统利用对应消息的回调函数出来
vfdff(作者)
2008-10-24 00:01
3
控制台工程类型创建的程序并不表示就是出来个黑白屏,也可以使用#include &lt;windows.h&gt;这里的API函数实现窗口过程
vfdff(作者)
2008-10-24 00:19
4
参数前缀: 含义<br />
SW_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: ShowWindow <br />
CW_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;CreateWindow <br />
MB_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;MessageBox<br />
WM_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;WindowMessage
vfdff(作者)
2008-10-24 01:00
5
this 使用小技巧:在以后的MFC编程中,如果在成员函数中想调用同类中的某个成员,可以使用VC++提供的自动列出成员函数功能,使用this-&gt;,VC++将列出该类中的所有成员,我们可以从列表中选择我们想调用的成员。<br />
自动列出成员函数功能,可以提高编写速度,减少拼写错误。我们经常不能完全记住某个函数的完整拼写,但却能够从列表中辨别出该函数,自动列出成员函数的功能在这时就显得更加有用了。事实上,在各种IDE编程环境中,我们通常都不可能记住也没有必要记住所有的函数,只要将常用的函数记住,其他不常用的函数只要记住其大概的写法和功能,在调用该函数时可以从自动列出成员函数中选取,这样可以大大节省我们的学习时间。我们不用花费大量的时间去死记硬背许多函数,利用自动列出成员函数功能和帮助系统,就能够在编程时顺利地使用这些函数,等用的次数多了,也就在不知不觉中完全掌握了这些函数。
vfdff(作者)
2008-10-25 18:07
6
不使用序列化机制<br />
<br />
正如您所看到的,框架提供从文件读取数据和将数据写入文件的默认方法。通过存档对象进行序列化符合大多数应用程序的需要。这样一个应用程序将文件整个读入内存,使用户得以更新文件,然后再将更新的版本写入磁盘。<br />
<br />
但是,一些应用程序操作数据的方式完全不是这样,对于这些应用程序不适合通过存档序列化的方式。这类应用程序包括数据库程序、只编辑部分大型文件的程序、编写仅文本文件的程序和共享数据文件的程序。<br />
<br />
在这些情况中,可以用不同的方法重写 Serialize 函数,通过 CFile 对象而不是通过 CArchive 对象调解文件操作。<br />
<br />
可以使用 CFile 类的 Open、Read、Write、Close 和 Seek 成员函数打开文件,将文件指针移动到(查找)文件中的特定位置,在该位置读取记录(指定的字节数),允许用户更新记录,然后再次查找同一位置并将记录写回文件。框架将为您打开文件,您可以使用 CArchive 类的 GetFile 成员函数获取指向 CFile 对象的指针。对于更复杂和更灵活的使用,可以重写 CWinApp 类的 OnOpenDocument 和 OnSaveDocument 成员函数。有关更多信息,请参见“MFC 参考”中的 CFile。<br />
<br />
在此方案中,Serialize 重写未进行任何操作,除非(举例说)要让它读写文件头以在文档关闭时保持最新状态。<br />
<br />
有关这类非存档处理的示例,请参见“MFC 高级概念”示例 CHKBOOK。
游客请输入验证码
浏览1943001次