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;
}