常用API函数、MFC函数、标准库函数——(获得DLL句柄、路径)(窗口位置、句柄、指针相关函数)等

四、设置获得环境变量

(一)stdlib.h标准库

(1)char *getenv和 errno_t getenv_s

头文件: stdlib.h
用 法: char *getenv(char *envvar);
errno_t getenv_s(size_t * restrict len,char * restrict value,rsize_t valuesz,const char * restrict name);
参数说明
len指向用户提供的位置的指针,存储环境变量的长度 (返回的字符长度)。
value指向用户提供的字符数组的指针,存储环境变量的内容(返回的字符)
valuesz允许getenv_s写入dest的最大字符数(缓冲区的大小)(注意:最大长度,低于最大长度返回NULL)
name以空字符结尾的字符串标识要查找的环境变量的名称(例如”:PATH“、“TMP”、"LIB"等)

用法实例

char *value;   size_t len;
getenv_s(&len, NULL, 0, "PATH");
value= (char*)alloc(len* sizeof(char));
getenv_s(&len, value, len, "PATH");

(2)::GetEnvironmentStrings和::SetEnvironmentString

(3)putenv和putenv_s

(二)API函数—GetEnvironmentStrings

三、获得当前工作路径

(一)::GetCurrentDirectory()获得当前路径

    wchar_t *path=new wchar_t[size]; 
    if(GetCurrentDirectory(size,path)!=0) 
    { 
        wstr=path; 
    } 

(二)char* getcwd(char* buffer, int len);

函数说明:
该函数所属头文件为<direct.h>
函数原型:char* getcwd(char* buffer, int len);
参数:buffer是指将当前工作目录的绝对路径copy到buffer所指的内存空间, len是buffer的长度。
返回值:获取成功则返回当前工作目录(绝对路径),失败则返回false(即NULL)。

二、获得ModuleHandle、获得资源句柄、应用程序名字等

(一)Win API函数LoadLibrary和LoadLibraryEx

LoadLibraryEx函数与LoadLibrary函数非常相似 。不同之处在于LoadLibraryEx提供的一组可选行为:
1、LoadLibraryEx可以在不调用 DLL 的DllMain函数的情况下加载 DLL 模块。
2、LoadLibraryEx可以以一种针对模块永远不会执行的情况进行优化的方式加载模块,就像加载数据文件一样加载模块。
3、LoadLibraryEx可以使用两种搜索策略中的任何一种来查找模块及其关联的模块,也可以搜索特定于进程的目录集。

(一)Win API函数GetModuleHandleA和GetModuleHandleExA

1、GetModuleHandleA—检索指定模块的模块句柄。该模块必须已由调用进程加载。

HMODULE GetModuleHandleExA(
  [in, optional] LPCSTR lpModuleName
);

参数
[in, optional] lpModuleName
已加载模块的名称(.dll 或 .exe 文件)。如果省略文件扩展名,则附加默认库扩展名 .dll。文件名字符串可以包含一个尾随点字符 (.) 以指示模块名称没有扩展名。该字符串不必指定路径。指定路径时,请务必使用反斜杠 (),而不是正斜杠 (/)。该名称与当前映射到调用进程地址空间的模块名称进行比较(大小写无关)。
如果此参数为 NULL, GetModuleHandle返回用于创建调用进程的文件(.exe 文件)的句柄。
GetModuleHandle函数不检索使用LOAD_LIBRARY_AS_DATAFILE标志加载的模块的句柄。
2、GetModuleHandleExA——检索指定模块的模块句柄并增加模块的引用计数,除非指定了 GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT。该模块必须已由调用进程加载。

BOOL GetModuleHandleExA(
  [in]           DWORD   dwFlags,
  [in, optional] LPCSTR  lpModuleName,
  [out]          HMODULE *phModule
);

(二)Win API函数GetModuleFileNameA

检索包含指定模块的文件的完全限定路径。该模块必须已由当前进程加载。
要查找由另一个进程加载的模块的文件,请使用 GetModuleFileNameEx函数。

DWORD GetModuleFileNameA(
  [in, optional] HMODULE hModule,
  [out]          LPSTR   lpFilename,
  [in]           DWORD   nSize
);

(三)Win API函数GetAppName

检索正在使用该文件的应用程序的名称

HRESULT GetAppName(
  [out] LPWSTR *ppszName
);

参数
[out] ppszName
类型:LPWSTR*
指向缓冲区的指针的地址,当此方法成功返回时,将接收应用程序名称。

(四)Win API函数GetResourceHandle

(五)MFC函数AfxGetApp

获取指向 对象的 CWinApp 指针

CWinApp* AFXAPI AfxGetApp();

(六)MFC函数AfxGetAppName

LPCTSTR AFXAPI AfxGetAppName();

(七)MFC函数AfxGetInstanceHandle

此函数使您能够检索当前应用程序的实例句柄。

HINSTANCE  AFXAPI AfxGetInstanceHandle();

(八)MFC函数AfxGetMainWnd

如果应用程序是 OLE 服务器,请调用此函数以检索指向应用程序的活动主窗口的指针。 使用此结果,而不是直接引用 m_pMainWnd 应用程序对象的成员。

CWnd* AFXAPI AfxGetMainWnd();

(九)MFC函数AfxGetThread

调用此函数以获取指向表示当前正在执行的线程的对象的指针 CWinThread

CWinThread* AfxGetThread();

(十)MFC函数AfxGetResourceHandle和AfxSetResourceHandle

1、HINSTANCE使用此函数返回的句柄直接访问应用程序的资源,例如,在调用 Windows 函数FindResource时。

extern HINSTANCE  AfxGetResourceHandle();

2、使用此函数设置 HINSTANCE 确定加载应用程序的默认资源的句柄。

void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);

(十一)MFC函数AfxFindResourceHandle

使用 AfxFindResourceHandle 处理资源链并按资源 ID 和资源类型找到特定资源。

HINSTANCE AFXAPI AfxFindResourceHandle( LPCTSTR lpszName,  LPCTSTR lpszType );

(十一)MFC函数AfxLoadLibrary和AfxLoadLibraryEx

如果应用程序使用多个线程,并且如果它动态加载 MFC 扩展 DLL,请确保使用 AfxLoadLibrary 并 AfxFreeLibrary (而不是 Win32 函数 LoadLibrary 和 FreeLibrary) 。 使用 AfxLoadLibrary 和 AfxFreeLibrary 确保加载和卸载 MFC 扩展 DLL 时执行的启动和关闭代码不会损坏全局 MFC 状态。

一、窗口位置、句柄、指针相关函数

(一)、GetWindowRect()、GetClientRect()

1、API函数

       CRect RC;
       ::GetWindowRect(hWnd,&RC);
       ::GetClientRect(hWnt,&RC);

2、MFC窗口函数

      CDialog* dlg;
      dlg->GetWindowRect(&RC)
      dlg->GetClientRect(&RC);

(二)、ScreenToClient()、ClientToSreen()

1、API函数

2、MFC函数

CWnd::ScreenToClient

(三)、SetWindowPos()、MoveWindow()

1、API函数

::SetWindowPos()

2、MFC函数

CWnd::SetWindowPos()

(四)、GetDlgItem()、GetSafeHwnd()、GetWindow()、GetParent()、FromHandle()

1、MFC函数:: GetDlgItem()、GetSafeHwnd()

CWnd*pWnd=GetDlgItem(IDD_);   //获取当前窗口控件指针          MFC函数
HWND hwnd=pWnd->GetSafeHwnd();//获得当前控件的句柄        

CWnd* GetWindow(UINT nCmd) const;       //返回当前窗口指定关系的窗口

2、API函数

HWND GetWindow(                        //返回指定窗口指定关系的窗口
  [in] HWND hWnd,
  [in] UINT uCmd
);

HWND GetParent(HWND hWnd);
//函数功能:该函数返回一个指定子窗口的父窗口句柄
//函数原型:HWND GetParent(HWND hWnd);
//参数:
//hWnd:子窗口句柄,函数要获得该子窗口的父窗口句柄。
//返回值:
//如果函数成功,返回值为父窗口句柄。如果窗口无父窗口,则函数返回NULL。若想获得更多错误信息,请调用GetLastError函数。





  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值