编程学习笔记 随时更新

自己把在学习中得到的经验随时写下来。

---------------------------------

Cstring转DWORD

DWORD ID=_tcstol(iter->second.csStallId,0,16);

----------------------------------

VC中表示基地加偏移数据

int * p;
    p = (int *)0x001897D4;
    p=(int *)(*p+0x8);
    p=(int *)(*p+0x4);

-------------------------------------

线程过程函数中设置热键

DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
    
    hwndDLG=CreateDialog(hinst,MAKEINTRESOURCE(IDD_DIALOG_WG),NULL,(DLGPROC)DlgProc);
    RegisterHotKey(0,100,0,VK_HOME);
    MSG msg;
    while (GetMessage(&msg,0,0,0))
    {
        switch(msg.message)
        {
            case WM_HOTKEY:
                ShowWindow(hwndDLG,SW_SHOW);
                break;
        }
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    UnregisterHotKey(0,100);
    return TRUE;
}

---------------------------------

DLL注入后,失去焦点,用这个函数

SwitchToThisWindow(Hwnd,TRUE);

------------------------------------

计算两坐标的距离

int CCtrlCon::com_sam(float x1,float y1,float x2,float y2)
{

    float x=fabs(x1-x2);
    float y=fabs(y1-y2);
    float z=sqrt(pow(x, 2) + pow(y, 2));
    return (int)z;
}

----------------------------------

字符转换的一点小问题

case WM_LBUTTONDOWN:
        int x = LOWORD(lParam);
        int y = HIWORD(lParam);
        WCHAR s[200];
        swprintf_s(s, _T("x=%d,y=%d"), x, y);
        MessageBox(NULL, s, _T("提示"), NULL);
        return TRUE;

 --------------------------------------

用户自定义消息

#define UM_TEST WM_USER+1
BEGIN_MESSAGE_MAP(CMFCApplication1Dlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_MESSAGE(UM_TEST, &CMFCApplication1Dlg::OnTest)//添加消息映射
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication1Dlg::OnBnClickedButton1)
END_MESSAGE_MAP()
LRESULT CMFCApplication1Dlg::OnTest(WPARAM w, LPARAM l)
{
    AfxMessageBox(_T("非系统消息"));
    return 100;
}

------------------------------------------------

记事本里添加控件

HWND hWnd = ::FindWindow(NULL, _T("无标题 - 记事本"));
    CWnd *p = CWnd::FromHandle(hWnd);
    m_wnd.CreateEx(WS_EX_CLIENTEDGE,L"Button", NULL, WS_CHILD | WS_VISIBLE|LVS_REPORT, CRect(150, 50, 300,100), p, 8921);
    p->SetDlgItemText(8921, L"按钮");
}

 ---------------------------------------

CHECKBOX选中

if (BST_CHECKED == IsDlgButtonChecked(IDC_HUAN))//#define BST_CHECKED        0x0001
    {
        AfxMessageBox(_T("选中了"));
    }
    else
    {
        AfxMessageBox(_T("没选中"));
    }

 ----------------------------------------------------------------------------

 调用DLL模块中的函数:

typedef int(*pFun)(int, int);//定义函数指针
    pFun Myfun;//定义函数指针变量
    HINSTANCE hModule = LoadLibrary(L"MyDll.dll");//加载DLL到内存中, 取得DLL模块的首地址,
    Myfun = (pFun)GetProcAddress(hModule, "Fun");//取得模块中Fun函数的地址,赋于函数指针
    int a =  Myfun(3, 5);//用函数指针直接以后可以调用DLL模块中的函数了

-------------------------------------------------------------------------------

原文地址:https://www.cnblogs.com/wumac/p/4111654.html