zoukankan      html  css  js  c++  java
  • 深入浅出mfc学习笔记1

    1:pg17图1-2windows程序的本体与操作系统间的关系

    2:_stdcall,_pascal,_cdecl,参数进入堆栈的次序。处理堆栈的责任归属

    3:PG27":对话框函数。通过只处理wm_initdialog和wm_command两个消息。对话框的各个控件也都是小小窗口,各有自己的窗口函数。它们以消息与其管理者(父窗口)沟通。而所有的控件传来的消息都是wm_command,再由其参数分辨哪一种控件以及哪一种通知消息。Model对话框的激活结束,靠的是DialogBox和EndDialog两个api函数。

    DialogBox(_hInst,

    "AboutBox",//对话框模板名称

    hWnd,//父窗口

    (Dkgproc)About)//对话框函数名称

    4:PS28:模块定义文件(.Def),windows程序需要一个模块定义文件。将模块名称,程序段和数据段的内存特性,模块堆大小。堆栈大小,所有的callback函数名称等等登记下来。

    5:PG29:windows程序的生与死:

    程序的死wm_close___DefWindowPrco___DestroyWindow把窗口清除

    发出Wm_Destroy___PostQuitMessage___Wm_QUit___Getmessage取得___结束消息循环。

    6:PG37:在mfc console程序中一定要指定多线程版的 C  runtime函数库。所以必须使用/MT选项

    7:PG39:一个进程的诞生和死亡。

    进程和兴对象。计数值为1——分配4GB的地址空间——加载器加载上述地址空间——建立主线程线程才是cpu时间的分配对象——调用startup code——starup code调用App的WinMain()函数——APP程序运行——关闭APP主窗口使winMain中的消息循环结束winmain结束——回到startup code——回到StartUp code——回到系统,系统调用ExitProcess结束进程。

    8:PG41:一个线程的诞生与死亡

    配置线程对象,其handle将成为createthread的返回值。——设定计数值为1——配置线程的上下文——保留线程的堆栈——设定指针缓存器和指令指针缓存器

    9:PG43:为了保证多线程情况下的安全,C运行库必须为每一个线程做一些登记工作。没有这些记录,C运行库就不知道为每个线程配置一块新的内存,作为线程的区域变量用。因此。CreateThread有一个名为_beginthreadex的外包函数。负责额外的登记工作。<process.h>

  • 相关阅读:
    [转]Java垃圾回收(GC)机制详解
    [转]java 面试题整理1
    [转]Java并发编程:Callable、Future和FutureTask
    [转]ReentrantReadWriteLock读写锁详解
    nginx -s reload 避坑指南!
    Java使用doubleCheck(双重检查) Singleton(单例模式) 重排序
    在 Docker 中生成 ProtoBuffer、gRPC 文件
    Golang MongoDB Driver 更新符合条件的数组元素的字段
    prometheus 告警 gpu 卡的ecc错误
    prometheus及gpu,k8s
  • 原文地址:https://www.cnblogs.com/lzjsky/p/1759443.html
Copyright © 2011-2022 走看看