怎样注册窗体类???

wml231 2008-05-04 08:09:50
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.hInstance =(HINSTANCE)GetModuleHandle(NULL); //这行为什么没有得到实例句柄
BOOL RegCls= RegisterClassEx(&wcex);
我需要用另一个进程中FindWindow找到这个窗体,虽然不用类名只用标题也能找到,但是
我还是希望加上类名比较安全,请高手帮忙。
...全文
67 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fairyprince 2008-05-04
  • 打赏
  • 举报
回复
如果你不处理的消息或非自定义消息,要调用缺省的消息处理!
例,重画消息 WM_PAINT
AfxGetInstanceHandle(); 是程序自身
wml231 2008-05-04
  • 打赏
  • 举报
回复
多谢,已经解决
wml231 2008-05-04
  • 打赏
  • 举报
回复
我用的非模式对话框,在他创建之前注册的话,HINSTANCE hInst = AfxGetInstanceHandle();
这行得到的是他的实例句柄吗??还有,我自己定义了消息响应函数,不用他的那个::WindowProc可以吗?
多谢拉。
fairyprince 2008-05-04
  • 打赏
  • 举报
回复
szClassName_Web 是类名
fairyprince 2008-05-04
  • 打赏
  • 举报
回复
如果你要处理消息,则
LRESULT CALLBACK DefPenWindowProc(HWND, UINT, WPARAM, LPARAM);

那段代码放在你使用这个窗体类之前就行
wml231 2008-05-04
  • 打赏
  • 举报
回复
多写各位,我做的是对话框窗体,请问,我的注册代码应该加在哪里???
WNDCLASS wndclass;
HINSTANCE hInst = AfxGetInstanceHandle();
if(!::GetClassInfo(hInst, szClassName_Web, &wndclass))
{
wndclass.style = 0;
wndclass.lpfnWndProc = CWebBrowseView::WindowProc;//这个过程我怎么定义呢??
wndclass.cbClsExtra = wndclass.cbWndExtra = 0;
wndclass.hInstance = hInst;
wndclass.hIcon = NULL;
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)COLOR_3DSHADOW;
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szClassName_Web;//这里应该是我的对话框类名把???

if (!AfxRegisterClass(&wndclass))
AfxThrowResourceException();
}
A19881007 2008-05-04
  • 打赏
  • 举报
回复
AfxRegisterWndClass 创建一个单文档 跟踪进去就行了 就可以看到系统怎么注册的了!
fairyprince 2008-05-04
  • 打赏
  • 举报
回复
CWebBrowseView::WindowProc
换成
::DefWindowProc或你自已的处理过程
fairyprince 2008-05-04
  • 打赏
  • 举报
回复
	WNDCLASS wndclass;
HINSTANCE hInst = AfxGetInstanceHandle();
if(!::GetClassInfo(hInst, szClassName_Web, &wndclass))
{
wndclass.style = 0;
wndclass.lpfnWndProc = CWebBrowseView::WindowProc;
wndclass.cbClsExtra = wndclass.cbWndExtra = 0;
wndclass.hInstance = hInst;
wndclass.hIcon = NULL;
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)COLOR_3DSHADOW;
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szClassName_Web;

if (!AfxRegisterClass(&wndclass))
AfxThrowResourceException();
}
Waiting4you 2008-05-04
  • 打赏
  • 举报
回复
就这四行代码是注册不了窗体的,还要类名,处理函数,Style呢,基本上照抄MSDN里的例子就行了。

另外想要另一个进程精确FindWindow这个窗体的话,可以用SetProp为这个窗体加上一个自定义属性作为标记。
「已注销」 2008-05-04
  • 打赏
  • 举报
回复
试试AfxRegisterWndClass

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧