必须把FARPROC proc改成
(WINAPI *)proc(CONST WNDCLASSEXA *);
以及
#if defined (UNICODE)
proc = GetProcAddress (hMod, "RegisterClassExW");
#else
proc = GetProcAddress (hMod, "RegisterClassExA");
#endif加上((WINAPI *)(CONST WNDCLASSEXA *))GetProcAddress (hMod, "RegisterClassExW");
因为FARPROC是一个无参数的定义类型,如果要动态调用函数,必须定义其参数类型
(WINAPI *)proc(CONST WNDCLASSEXA *);
以及
#if defined (UNICODE)
proc = GetProcAddress (hMod, "RegisterClassExW");
#else
proc = GetProcAddress (hMod, "RegisterClassExA");
#endif加上((WINAPI *)(CONST WNDCLASSEXA *))GetProcAddress (hMod, "RegisterClassExW");
因为FARPROC是一个无参数的定义类型,如果要动态调用函数,必须定义其参数类型
解决方案 »
- 被辞退了, oh
- 关于手机短信UNICODE码转换的问题。我是新人,没有分,大家帮帮我!
- 关于编辑框变量提示2次错误的问题
- 用FindWindow找到父窗口后,发送点击消息,弹出新的模态子窗口,此时用FindWindow找不到子窗口,EnumWindows也不行,如何解决
- 有谁帮我看看这是什么意思
- 各位大虾,小弟初学vc,现有如下问题望大虾们指教
- 问一个关于CDataGrid的问题
- open inventor屏幕坐标转换三维坐标,愿意帮忙并解决问题的小弟RMB酬谢了。
- 如何在对话框出来后,触发按钮事件
- 两个进程能共享一个串口吗?
- 棘手,如何在一个程序中创建两个顶层的窗口?
- 如何实现资源管理器拖动时候透明的图标?
typedef ATOM(* PROC1) (CONST WNDCLASSEX *lpwcx);
#define PROC_FUNCTION "RegisterClassEx"ATOM CRegDlg::MyRegisterClass(CONST WNDCLASS *lpwc)
{
HANDLE hMod;
PROC1 proc;
WNDCLASSEX wcex; hMod = GetModuleHandle ("USER32");
if (hMod != NULL) {#if defined (UNICODE)
proc = (PROC1)GetProcAddress (hMod, "RegisterClassExW");
#else
proc = (PROC1)GetProcAddress ((HINSTANCE)hMod, "RegisterClassExA");
#endif if (proc != NULL) { wcex.style = lpwc->style;
wcex.lpfnWndProc = lpwc->lpfnWndProc;
wcex.cbClsExtra = lpwc->cbClsExtra;
wcex.cbWndExtra = lpwc->cbWndExtra;
wcex.hInstance = lpwc->hInstance;
wcex.hIcon = lpwc->hIcon;
wcex.hCursor = lpwc->hCursor;
wcex.hbrBackground = lpwc->hbrBackground;
wcex.lpszMenuName = lpwc->lpszMenuName;
wcex.lpszClassName = lpwc->lpszClassName; // Added elements for Windows 95:
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.hIconSm = LoadIcon(wcex.hInstance, "SMALL"); return (*proc)(&wcex);//return RegisterClassEx(&wcex);
}
}
return (RegisterClass(lpwc));
}
#define PROC_FUNCTION "RegisterClassEx" //不要
改正:
#if defined (UNICODE)
proc = (PROC1)GetProcAddress ((HINSTANCE)hMod, "RegisterClassExW");
#else
proc = (PROC1)GetProcAddress ((HINSTANCE)hMod, "RegisterClassExA");
#endif