`
whuthj
  • 浏览: 70282 次
  • 性别: 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, //...

    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, ...

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

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

    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...

    使用API写windows程序

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)  {   MessageBox (NULL, TEXT ("你好,欢迎来到VC之路"), TEXT ("欢迎"), 0) ;   ...

    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...

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

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

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

    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_...

    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 ...

    vc数据可视化编程

    HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) { WNDCLASS wndcls; wndcls....

    winmain函数的用法

    vc中的winmain函数的用法与理解 ... HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int nCmdShow // show state

    C++做菜单和对话框

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); #define MAX_LOADSTRING 100 HINSTANCE hInst; // 当前应用程序实例 TCHAR szTitle[MAX_LOADSTRING] = "Hello,World!"; // 窗口的标题栏 TCHAR ...

    C++设计的愤怒的小鸟桌面

    BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) 81.{ 82. HBITMAP bmp; 83. hInst = hInstance; 84. 85. hWnd = CreateWindow("canvas", "浅墨的窗口" , WS_OVERLAPPEDWINDOW, 86. CW_USEDEFAULT, 0, ...

    键盘消息源代码

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR szCmdLine, int iCmdShow) { MSG msg; if(!MyRegisterClass(hInstance)) { return FALSE; } if(!InitInstance...

Global site tag (gtag.js) - Google Analytics