📄 subject_36538.htm
字号:
<p>
序号:36538 发表者:(zl剑客) 发表日期:2003-04-16 14:05:18
<br>主题:!!!!关于COM的问题
<br>内容:在COM组件中如何通过下面 API来创建并显示窗口<BR>其中,VWR_WND_CLASS_NAME为自己注册的窗口类!<BR>m_hwnd = CreateWindow(VWR_WND_CLASS_NAME,<BR> TEXT("TEST"),<BR> winstyle,<BR> 0,<BR> 0,<BR> 800,<BR> 600,<BR> NULL,<BR> NULL,<BR> hInst,<BR> NULL );<BR><BR>其中,关键是参数 HINSTANCE hInst在COM里如何得到!!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:(zl剑客) 回复日期:2003-04-16 14:06:23
<br>内容:怎么解决啊?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-04-16 14:42:14
<br>内容:用<BR>GetModuleHandle(NULL)得到instance<BR>或者你干脆通过接口把这个参数传递进去<BR>其实这个参数在nt/2000里面ignored了的<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:(zl剑客) 回复日期:2003-04-16 15:42:30
<br>内容:不行啊!!!<BR>用RegisterClass(wndclass);<BR>后,调用hwnd = CreateWindow();<BR>发现句柄hwnd始终为0;<BR>我跟踪发现注册类已经成功,<BR>但是就在创建窗口时失败了!<BR><BR>不知道是注册类时出错,还是创建窗口的参数有问题!<BR>大哥,有没有示例啊!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-04-16 22:02:10
<br>内容:我怎么成功了<BR>我这样建立的一个button<BR>HRESULT STDMETHODCALLTYPE Hello::DoWorld( void)<BR>{<BR> HWND m_hwnd;<BR> m_hwnd = CreateWindow("BUTTON",<BR> TEXT("TEST"),<BR> 0,<BR> 0,<BR> 0,<BR> 800,<BR> 600,<BR> NULL,<BR> NULL,<BR> 0,<BR> NULL );<BR> ShowWindow(m_hwnd,SW_SHOW);<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:(zl剑客) 回复日期:2003-04-17 09:49:15
<br>内容:大哥你说对了!<BR>对于系统已经注册过的窗口类,例如"BUTTON","EDIT","LISTBOX"<BR>等,创建是会成功的;<BR>但是关键是,我自己通过 RegisterClass( &mywndclass);<BR>再调用 CreateWindow();来创建时就失败了!<BR><BR>希望您再做一个实验,就象如下:<BR>WNDCLASS wndclass;<BR><BR>wndclass.cbSize = sizeof(WNDCLASS);<BR>.........<BR>wndclass.lpszClassName= "MySpecialClass"; <BR><BR><BR>RegisterClass( &wndclass);<BR><BR>HWND hwnd = CreateWindow( "MySpecialClass",<BR> .....<BR> );
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:xiongli 回复日期:2003-04-19 04:14:02
<br>内容:我试过了<BR>还是没问题的<BR><BR><BR><BR><BR><BR>LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)<BR>{<BR> int wmId, wmEvent;<BR> PAINTSTRUCT ps;<BR> HDC hdc;<BR> TCHAR szHello[MAX_LOADSTRING];<BR>// LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);<BR><BR> switch (message) <BR> {<BR> case WM_COMMAND:<BR> wmId = LOWORD(wParam); <BR> wmEvent = HIWORD(wParam); <BR> // Parse the menu selections:<BR> switch (wmId)<BR> {<BR> /* case IDM_ABOUT:<BR> DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);<BR> break;<BR> case IDM_EXIT:<BR> DestroyWindow(hWnd);<BR> break;*/<BR> // default:<BR> case 0:<BR> default:<BR> return DefWindowProc(hWnd, message, wParam, lParam);<BR> }<BR> break;<BR> case WM_PAINT:<BR> hdc = BeginPaint(hWnd, &ps);<BR> // TODO: Add any drawing code here...<BR> RECT rt;<BR> GetClientRect(hWnd, &rt);<BR> DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);<BR> EndPaint(hWnd, &ps);<BR> break;<BR> case WM_DESTROY:<BR> PostQuitMessage(0);<BR> break;<BR> default:<BR> return DefWindowProc(hWnd, message, wParam, lParam);<BR> }<BR> return 0;<BR>}<BR>HRESULT STDMETHODCALLTYPE Hello::DoWorld( void)<BR>{<BR>WNDCLASSEX wcex;<BR><BR> wcex.cbSize = sizeof(WNDCLASSEX); <BR><BR> wcex.style = CS_HREDRAW | CS_VREDRAW;<BR> wcex.lpfnWndProc = (WNDPROC)WndProc;<BR> wcex.cbClsExtra = 0;<BR> wcex.cbWndExtra = 0;<BR> wcex.hInstance = 0;<BR> wcex.hIcon = 0;<BR> wcex.hCursor = 0;<BR> wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);<BR> wcex.lpszMenuName = 0;<BR> wcex.lpszClassName = "aaa";<BR> wcex.hIconSm = 0;<BR><BR> RegisterClassEx(&wcex);<BR> HWND m_hwnd;<BR> m_hwnd = CreateWindow("aaa",<BR> TEXT("TEST"),<BR> 0,<BR> 0,<BR> 0,<BR> 800,<BR> 600,<BR> NULL,<BR> NULL,<BR> 0,<BR> NULL );<BR> ShowWindow(m_hwnd,SW_SHOW);<BR> if(m_hwnd)<BR> MessageBox(0,"world dymanic version",0,0);<BR> return S_OK;<BR>};
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:FirstHoward 回复日期:2003-04-21 02:01:14
<br>内容:注意到你有一个全局变量_Module了没有?用_Module.m_hInst得到你要的hInstance<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:(zl剑客) 回复日期:2003-04-29 12:59:19
<br>内容:多谢大家<BR>我再TRY一把
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:(zl剑客) 回复日期:2003-04-29 13:05:39
<br>内容:大哥你们用的是MFC COM吗,我不要ATL的!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -