void CAPITESTDlg::OnBnClickedBtnDiskFree()
{
typedef BOOL(WINAPI* MyFunc)(LPCSTR rootName, PULARGE_INTEGER pulA, PULARGE_INTEGER pulB, PULARGE_INTEGER pulFreeBytes);
ULARGE_INTEGER a, b, c;
HMODULE hModule = LoadLibraryEx(_T("kernel32.dll"), NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
if (hModule)
{
MyFunc diskspace = (MyFunc)GetProcAddress(hModule, "GetDiskFreeSpaceExA");
if (diskspace)
{
diskspace("C:\\", &a, &b, &c);
}
::FreeLibrary(hModule);
ULONGLONG i = c.QuadPart / 1024;
CString text;
text.Format(_T("%d"), i);
GetDlgItem(IDC_EDIT1)->SetWindowText(text);
}
}
void CAPITESTDlg::OnBnClickedBtnGetIcon()
{
CFileDialog file(TRUE, _T("file"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("位图文件(*.*)|*.*"), this);
if (file.DoModal()==IDOK)
{
CString path = file.GetFileName();
SHFILEINFO sfi;
typedef BOOL(WINAPI* MyFunc)(LPCTSTR pszPath, DWORD dwFileAttributes, SHFILEINFO* psfi, UINT cbFileInfo, UINT uFlags);
HMODULE hModule = LoadLibraryEx(_T("shell32.dll"), NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
if (hModule)
{
MyFunc getFileInfo = (MyFunc)GetProcAddress(hModule, "SHGetFileInfo");
if (getFileInfo)
{
getFileInfo(path, 0, &sfi, sizeof(SHFILEINFO), SHGFI_ICON);
//注意这个CStatic要选择Picture控件才能显示
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_ICON);
pStatic->SetIcon(sfi.hIcon);
}
::FreeLibrary(hModule);
}
}
}
void CAPITESTDlg::OnBnClickedBtnDrawText()
{
CRect rc;
GetDlgItem(IDC_TEXT)->GetWindowRect(&rc);
ScreenToClient(&rc);
HDC dc = this->GetDC()->m_hDC;
typedef BOOL(WINAPI* MyFunc)(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT nFormat);
HMODULE hModule = LoadLibraryEx(_T("user32.dll"), NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
if (hModule)
{
MyFunc drawText = (MyFunc)GetProcAddress(hModule, "DrawTextA");
if (drawText)
{
CString str = "Hello";
drawText(dc, str, str.GetLength(), &rc, DT_CENTER);
}
::FreeLibrary(hModule);
}
}
c++ 调用系统的dll
猜你喜欢
转载自blog.csdn.net/dxm809/article/details/115157055
今日推荐
周排行