首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

HWND (HWND)”与“int ()”的间接寻址级别不同,该怎么处理

2013-04-20 
HWND (HWND)”与“int ()”的间接寻址级别不同本帖最后由 fwq123gg 于 2013-04-16 20:50:09 编辑[codec][/co

HWND (HWND)”与“int ()”的间接寻址级别不同
本帖最后由 fwq123gg 于 2013-04-16 20:50:09 编辑

[code=c]
[/code]写的带有文本框控件的窗口
源代码:
#include <Windows.h>
#include <D:\备份\窗口\窗口\resource.h>
HINSTANCE hinst;
LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM);
BOOL InitApplication (HINSTANCE hInstance)
{
WNDCLASSEX wcx;
wcx.cbSize = sizeof (wcx);//WNDCLASSEX 的大小
wcx.style = CS_HREDRAW | CS_VREDRAW;//从这个窗口类派生的窗口具有的风格
wcx.lpfnWndProc = MainWndProc;//窗口处理函数的指针
wcx.cbClsExtra = 0;//指定紧跟在窗口类结构后的附加字节数
wcx.cbWndExtra = 0;//指定紧跟在窗口事例后的附加字节数
wcx.hInstance = hInstance;//本模块的事例句柄
wcx.hIcon = LoadIcon (NULL, IDI_APPLICATION);//图标的句柄
wcx.hCursor = LoadCursor (NULL, IDC_ARROW);//光标的句柄
wcx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//背景画刷的句柄
wcx.lpszMenuName = NULL;//指向菜单的指针
wcx.lpszClassName = "MYCLASS";//指向类名称的指针
wcx.hIconSm = LoadIcon(NULL, IDI_WINLOGO);//和窗口类关联的小图标。如果该值为NULL。则把hIcon中的图标转换成大小合适的小图标
return (RegisterClassEx (&wcx));
}
DWORD SetWindows (HWND hwndEdit, LPRECT lpRect)
{
SetWindowPos (hwndEdit, HWND_TOP,
lpRect->right * 0.3, lpRect->top,
lpRect->right * 0.7, lpRect->bottom *0.7, SWP_SHOWWINDOW);
return 0;
}
BOOL InitInstance (HINSTANCE hInstance, int nCmdShow)
{
HWND hwnd, hwndMain, hwndEdit;
RECT rect;
LPSTR lpszLatin = "王登科大SB";
hinst = hInstance;
hwnd = CreateWindow (
"MYCLASS",//WNDCLASSEX中定义的lpszClassName
"NEW",//窗口标题
WS_OVERLAPPEDWINDOW,//创建窗口的风格
CW_USEDEFAULT,//指定窗口的初始水平位置
CW_USEDEFAULT,//指定窗口的初始垂直位置
CW_USEDEFAULT,//以设备单元指明窗口的宽度
CW_USEDEFAULT,//以设备单元指明窗口的高度
NULL,//指向被创建窗口的父窗口或所有者窗口的句柄
LoadMenu (hInstance, MAKEINTRESOURCE(IDR_MENU1)),//菜单句柄
hInstance,//程序实例的句柄
(LPVOID) NULL);
hwndMain = hwnd;
hwndEdit = CreateEdit (hwndMain);
GetClientRect (hwndMain, &rect);
SetWindows (hwndEdit, &rect);
ShowTextOnEdit (hwndEdit, lpszLatin);
ShowWindow (hwnd, nCmdShow);//显示窗口
UpdateWindow (hwnd);//更新窗口
if (!hwnd)
{
return FALSE;
}
else
{
return TRUE;
}
}
LRESULT CALLBACK MainWndProc (HWND hwnd,
  UINT uMsg,
  WPARAM wParam,
  LPARAM lParam)//消息处理函数
{
switch (uMsg)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
default:
break;
}
case WM_DESTROY://窗口消失函数
ExitThread (0);//线程终止
break;
default:
return DefWindowProc (hwnd, uMsg, wParam, lParam);//系统默认消息处理函数
}
}
HWND CreateEdit (HWND hwndP)
{
HWND hwnde;
hwnde = CreateWindow (
"EDIT",
NULL,
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
hwndP,
(HMENU)NULL,
hinst,
(LPVOID)NULL);
ShowWindow (hwnde, SW_SHOW);
UpdateWindow (hwnde);
return hwnde;


}
DWORD ShowTextOnEdit (HWND hwndEdit,LPSTR szTextToShow)
{
SendMessage (hwndEdit, WM_SETTEXT, 0, (LPARAM)szTextToShow);
return 0;
}
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;//定义消息结构体
BOOL fGotMessage;//fGotMessage用于检测获取消息是否成功
if (!InitApplication (hInstance))
{
return FALSE;
}
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
while ((fGotMessage = GetMessage (&msg, (HWND)NULL, 0, 0)) != 0 && fGotMessage != -1)//本循环用于消息循环获取
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;

}


以下是visual studio 2010额错误提示:
1>------ 已启动生成: 项目: 窗口, 配置: Debug Win32 ------
1>生成启动时间为 2013/4/16 20:43:34。
1>InitializeBuildStatus:
1>  正在对“Debug\窗口.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1>  example1.c
1>example1.c(25): warning C4244: “函数”: 从“double”转换到“int”,可能丢失数据
1>example1.c(26): warning C4244: “函数”: 从“double”转换到“int”,可能丢失数据
1>example1.c(26): warning C4244: “函数”: 从“double”转换到“int”,可能丢失数据
1>example1.c(48): warning C4013: “CreateEdit”未定义;假设外部返回 int
1>example1.c(51): warning C4013: “ShowTextOnEdit”未定义;假设外部返回 int
1>example1.c(84): error C2040: “CreateEdit”:“HWND (HWND)”与“int ()”的间接寻址级别不同
1>example1.c(103): warning C4142: 类型的良性重定义
1>
1>生成失败。
1>
1>已用时间 00:00:00.30
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
弄了半天就是不懂那个错误提示是什么意思...求解答
[解决办法]
HWND CreateEdit (HWND hwndP);
把这句写在InitApplication函数前面,进行声明。

热点排行