`
whuthj
  • 浏览: 72533 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

HINSTANCE\HWND\CWnd\HANDLE 的区别

阅读更多

HINSTANCE是应用程序实例句柄,

HWND是窗口对象句柄,

HANDLE是任意对象的句柄,

CWnd是MFC中的窗口类。

 

MSDN里面对于HINSTANCE的解释是"handle   to   an   instance"   就是说是一个instance的句柄。而对instance的解释是"An   object   for   which   memory   is   allocated   or   which   is   persistent."   占有内存的一个对象。

对于HWND的解释是“Handle   to   a   window.”而对window的解释是"In   a   graphical   Windows-based   application,   a   window   is   a   rectangular   area   of   the   screen   where   the   application   displays   output   and   receives   input   from   the   user.   Therefore,   one   of   the   first   tasks   of   a   graphical   Windows-based   application   is   to   create   a   window.   " 就是说是屏幕上的一块区域。

CWnd是MFC的一个类了,它有窗体,几乎所有有图形显示的类都是从它派生的,它自己是从CCmdTarget类派生的,所以它可以接受消息。CCmdTarget类的爸爸可就是CObject了。

msdn对于Handle的解释是"Handle   to   an   object."   ,简直是废话。自己怎么解释自己呢。可是好像也只能如此了。我感觉句柄就可以理解为控制对象的一个…………东西吧。  

 

 

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


ID--HANDLE--HWND三者之间的互相转换
ID--HANDLE--HWND三者之间的互相转换
id->句柄-----------hWnd = ::GetDlgItem(hParentWnd,id);
id->指针-----------CWnd::GetDlgItem();
句柄->id-----------id = GetWindowLong(hWnd,GWL_ID);
句柄->指针--------CWnd *pWnd=CWnd::FromHandle(hWnd);
指针->ID----------id = GetWindowLong(pWnd->GetSafeHwnd,GWL_ID);
                                            GetDlgCtrlID();
指针->句柄--------hWnd=cWnd.GetSafeHandle() or mywnd->m_hWnd;

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

应用程序的一些HANDLE

// 得到窗口句柄
HWDN parenthwnd = ::FindWindowEx(NULL, parenthwnd, "#32770", NULL);
// 得到此窗口的主线程ID
DWORD dwThreadId = ::GetWindowThreadProcessId(parenthwnd, 0);
// 得到当前进程的句柄
HANDLE hApp = GetModuleHandle(NULL);

分享到:
评论

相关推荐

    知道了一个程序的主窗口hwnd,怎么得到这个进程的hInstance

    知道了一个程序的主窗口hwnd,怎么得到这个进程的hInstance

    vc++深入了解源代码 (1

    HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ); int WINAPI WinMain( HINSTANCE hInstance, //...

    使用API写windows程序

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox(NULL, TEXT("你好,欢迎来到VC之路"), TEXT("欢迎"), 0); return 0; } ``` 这个例子展示了如何...

    VC++深入详解code

    HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ); int WINAPI WinMain( HINSTANCE hInstance, /...

    简单债务管理(32位汇编)

    invoke LoadCursor,hInstance,IDI_HANDLE_ICON mov hCursor,eax invoke LoadAccelerators,hInstance,IDA_ACCELERATOR mov hAccelerator,eax invoke RegisterClassEx, addr wc INVOKE CreateWindowEx,NULL,ADDR...

    计算机图形学几何变换VC++实现源码

    hmenu=LoadMenu(hInstance,"menu"); hInst=hInstance; hwnd = CreateWindow ( szAppName, TEXT ("图形变换"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, ...

    错误C2440:“ =”:无法从“ HWND”转换为“ HINSTANCE”

    请看我对这个问题的评论。 提出问题并隐藏导致问题的声明不是很好。无论如何,您只是尝试使用某些不相关的类型,以ghMDIClientArea的名称来判断,这是非常不相关的,出于某种原因,只有您可以知道。...

    贪吃蛇 GAME 源码 vc++6.0编译

    hInstance, // program instance handle NULL) ; // creation parameters ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage(&msg); ...

    句柄和指针的区别

    DECLARE_HANDLE(HINSTANCE); DECLARE_HANDLE(HLOCAL); DECLARE_HANDLE(HGLOBAL); DECLARE_HANDLE(HDC); DECLARE_HANDLE(HRGN); DECLARE_HANDLE(HWND); DECLARE_HANDLE(HMENU); DECLARE_HANDLE(HACCEL); DECLARE_...

    Delphi 2010 下的查看类名和handle的Demo

    在Windows API中,它是以整数形式表示的,比如HWND(窗口句柄)和HINSTANCE(实例句柄)等。 在Delphi中,获取类名通常使用`Classname`属性,它返回当前对象的类名字符串。例如,对于一个名为`MyObject`的对象,你...

    soil测试程序,可以正常运行

    void EnableOpenGL(HWND hwnd, HDC*, HGLRC*); void DisableOpenGL(HWND, HDC, HGLRC); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcex...

    SetWindowText()

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 创建窗口 HWND hWnd = CreateWindow("STATIC", "初始标题", WS_VISIBLE | WS_OVERLAPPEDWINDOW, CW_USE...

    Win7下绕过UAC代码

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); void RefreshProcs(HWND hWnd); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { g_hInstance...

    中间有五角星(填色不完全)图章

    long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam); BOOL InitWindowsClass(HINSTANCE hInstance); BOOL InitWindows(HINSTANCE hInstance,int nCmdShow); int WINAPI WinMain(HINSTANCE ...

    vc++编程最简单的winmain程序

    HWND hwnd=CreateWindow("Weixin2003","北京维新科学技术培训中心",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL); DWORD dwStyle=GetWindowLong(hwnd, GWL_STYLE); dwStyle&=~(WS_SIZEBOX|WS_...

    CStatic控件的基本使用

    CStatic控件是MFC库中的一个重要组成部分,它继承自CWnd类,主要用来在用户界面上展示静态信息,如文本、图标、指针、位图等。由于CStatic控件通常不具备用户交互功能,因此它不处理输入或输出,但通过设置特定属性...

    MFC实验报告

    HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ); int WINAPI WinMain( HINSTANCE hInstance, //...

    window_Cwnd.rar_GetProcAddress_cad_getwindowlong_user32.dll_创建窗口

    HINSTANCE hInst = LoadLibrary("User32.DLL") if(hInst) { typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD) MYFUNC fun = NULL //取得SetLayeredWindowAttributes函数指针 fun=(MYFUNC)...

    用鼠标画矩形的win32代码

    ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); int ...

    C++计算器编程实例

    HINSTANCE appInstance = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE); PlaySound(TEXT("IDA_MYMUSIC"), appInstance, SND_RESOURCE | SND_ASYNC | SND_LOOP); // Additional initializing code here ...

Global site tag (gtag.js) - Google Analytics