tagCR_INSTALL_INFOA Struct Reference
http://repo.isis.vanderbilt.edu/doxygen/gme/nightly/structtagCR__INSTALL__INFOA.html
CWinApp::ExitInstance
由框架调用内Run
成员函数以退出应用程序的此实例。
virtual int ExitInstance();
返回值
应用程序的退出代码;0 表示没有错误,而大于 0 的值指示错误。 此值用作从返回的值WinMain
。
备注
不要调用此成员函数从任何位置之内Run
成员函数。
此函数的默认实现将写入应用程序的框架选项。INI 文件。 重写此函数来清理您的应用程序终止时。
示例
int CMyApp::ExitInstance() {
if (m_pMySampleMem)
delete m_pMySampleMem;
DoCleanup();
return CWinApp::ExitInstance(); }
GlobalAlloc
https://baike.baidu.com/item/GlobalAlloc/9322541?fr=aladdin
GetFileVersionInfo
https://baike.baidu.com/item/GetFileVersionInfo
https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms890951(v%3dmsdn.10)
VerQueryValue
https://docs.microsoft.com/en-us/previous-versions/aa909243(v%3dmsdn.10)
https://baike.baidu.com/item/VerQueryValue
GetFileVersionInfoSize
https://baike.baidu.com/item/GetFileVersionInfoSize
https://docs.microsoft.com/en-us/previous-versions/aa914421(v%3dmsdn.10)
BYTE_PTR和WORD_PTR
前者指明了指令访问的内存单元是一个字节单元,也就是8位,也就是最大的数为 0FFH,化成10进制数为256,指令访问的是内存,是因为加方括号的都是存储器寻址,方括号里的DI是变址寄存器,整个代表以DI里的内容作为偏移地址,然后以(DS)*16+(DI)得到的值作为在存储器里的物理地址
要是没有BYTE PTR的话,那个物理地址对应的是低字节的内容,然后物理地址加1对应的物理地址对应的才是高字节的内容。有了BYTE PTR后只要取该物理地址对应的一个字节的内容即可
比如说MOV BYTE PTR[BX] 10H
源操作数用的是立即寻址,相当于直接赋值10H,目的操作数用的是寄存器间接寻址,假设BX里的内容(BX)=1000H,(DS)=2000H,那么对应的物理地址为21000H,现在这个物理地址对应的单元内容是10H
WORD PTR表示指令访问的内存单元是两个字节单元
GlobalAlloc
https://baike.baidu.com/item/GlobalAlloc/9322541?fr=aladdin
GlobalUnlock
https://baike.baidu.com/item/GlobalUnlock/1918756?fr=aladdin
GlobalFree
HGLOBAL GlobalFree( HGLOBAL hMem // 指向全局变量的句柄
);
hMem是有 GlobalAlloc 或者 GlobalReAlloc 函数返回的
该函数是释放指定的全局内存块。在调用了这个函数以后,hMem 句柄就不再有效。注意调用这个函数的时候,内存块不会进入锁定状态。
返回值:如果函数成功返回NULL
如果失败返回hMem 获得错误信息可以调用GetLastError函数。
PS:内存释放后,企图向那个内存块写入的任何数据都可能造成进程堆的崩溃,导致严重的异常错误。
LoadIcon
https://baike.baidu.com/item/LoadIcon/552203?fr=aladdin
AppendMenu
https://baike.baidu.com/item/AppendMenu