SDK简单的登录界面制作(菜鸟作品)—— 小仙会逐步完善 请大家指点下
#include <Windows.h>HINSTANCE g_hInstance;
HWND hChild, DengLu;
LRESULT CALLBACK WndProc(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
LRESULT CALLBACK ChildProc(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
void RegisterWnd(LPCTSTR lpClassName,UINT Style,WNDPROC proc)
{
WNDCLASSEX wce;
wce.style = Style;
wce.lpfnWndProc = proc;
wce.cbSize = sizeof(WNDCLASSEX);
wce.cbClsExtra = 0;
wce.cbWndExtra = 0;
wce.hInstance = g_hInstance;
wce.hIcon= 0;
wce.hCursor = 0;
wce.hIconSm = 0;
wce.hbrBackground = HBRUSH(COLOR_BTNFACE + 1);
wce.lpszClassName = lpClassName;
wce.lpszMenuName = 0;
if(!RegisterClassEx(&wce))
{
MessageBox(NULL,TEXT("注册失败"),TEXT("提示"),MB_OK);
}
}
HWND CreateWnd(LPCTSTR lpClassName,LPCTSTR name,DWORD Style,HWND hParent)
{
HWND hWnd = CreateWindowEx(0,lpClassName,name,
Style,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,hParent,NULL,g_hInstance,NULL);
return hWnd;
}
void DisplayWnd(HWND hWnd)
{
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
}
void Message()
{
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
RegisterWnd(L"denglu",CS_HREDRAW|CS_VREDRAW,WndProc);
DengLu = CreateWnd(L"denglu",TEXT("登录"),WS_OVERLAPPED|WS_SYSMENU,NULL);
MoveWindow(DengLu,600,300,280,160,TRUE);
DisplayWnd(DengLu);
RegisterWnd(L"Child",CS_HREDRAW|CS_VREDRAW,ChildProc);
Message();
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(uMsg)
{
case WM_CREATE:
{
CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("EDIT"),TEXT("bbs.fishc.com"),
WS_CHILD|WS_VISIBLE,40,20,200,30,hWnd,HMENU(1001),g_hInstance,NULL);
CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("BUTTON"),TEXT("登录"),
WS_CHILD|WS_VISIBLE,40,80,200,30,hWnd,HMENU(1002),g_hInstance,NULL);
ShowWindow(hWnd,SW_SHOW);
break;
}
case WM_COMMAND:
{
switch(wParam)
{
case 1002:
{
hChild = CreateWnd(L"Child",TEXT("窗口风格管理"),WS_OVERLAPPED|WS_SYSMENU,DengLu);
MoveWindow(hChild,500,300,500,300,TRUE);
DisplayWnd(hChild);
break;
}
}
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
LRESULT CALLBACK ChildProc(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(uMsg)
{
case WM_CREATE:
{
ShowWindow(DengLu,SW_HIDE);
}
case WM_SYSCOMMAND:
{
switch(wParam)
{
case SC_CLOSE:
{
ShowWindow(DengLu,SW_SHOW);
break;
}
}
}
break;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
回帖是一种美德,让我们拥有这种美德~
改进后....
本帖最后由 拈花小仙 于 2014-11-16 21:32 编辑#include <Windows.h>
HINSTANCE g_hInstance;
HWND hChild, DengLu;
HWND hWndEdit;//这个变量接收编辑框的hwnd用来获取内容用的
//获取内容用getwindowtext比getdlgitemtext省事
LRESULT CALLBACK WndProc(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
LRESULT CALLBACK ChildProc(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
void RegisterWnd(LPCTSTR lpClassName,UINT Style,WNDPROC proc)
{
WNDCLASSEX wce;
wce.style = Style;
wce.lpfnWndProc = proc;
wce.cbSize = sizeof(WNDCLASSEX);
wce.cbClsExtra = 0;
wce.cbWndExtra = 0;
wce.hInstance = g_hInstance;
wce.hIcon= 0;
wce.hCursor = 0;
wce.hIconSm = 0;
wce.hbrBackground = HBRUSH(COLOR_BTNFACE + 1);
wce.lpszClassName = lpClassName;
wce.lpszMenuName = 0;
if(!RegisterClassEx(&wce))
{
MessageBox(NULL,TEXT("注册失败"),TEXT("提示"),MB_OK);
}
}
HWND CreateWnd(LPCTSTR lpClassName,LPCTSTR name,DWORD Style,HWND hParent)
{
HWND hWnd = CreateWindowEx(0,lpClassName,name,
Style,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,hParent,NULL,g_hInstance,NULL);
return hWnd;
}
void DisplayWnd(HWND hWnd)
{
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
}
void Message()
{
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
RegisterWnd(L"denglu",CS_HREDRAW|CS_VREDRAW,WndProc);
DengLu = CreateWnd(L"denglu",TEXT("登录"),WS_OVERLAPPED|WS_SYSMENU,NULL);
MoveWindow(DengLu,600,300,280,160,TRUE);
DisplayWnd(DengLu);
RegisterWnd(L"Child",CS_HREDRAW|CS_VREDRAW,ChildProc);
Message();
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(uMsg)
{
case WM_CREATE:
{
hWndEdit = CreateWindowExW(WS_EX_CLIENTEDGE,TEXT("EDIT"),TEXT("bbs.fishc.com"),
WS_CHILD|WS_VISIBLE,40,20,200,30,hWnd,HMENU(1001),g_hInstance,NULL);
CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("BUTTON"),TEXT("登录"),
WS_CHILD|WS_VISIBLE,40,80,200,30,hWnd,HMENU(1002),g_hInstance,NULL);
ShowWindow(hWnd,SW_SHOW);
break;
}
case WM_COMMAND:
{
switch(wParam)
{
case 1002:
{
TCHAR szText;
GetWindowText(hWndEdit,szText,-1);
if(lstrcmp(szText,TEXT("bbs.fishc.com"))!=0)//输入和预置的不对应
return 0;//就返回
//正确就执行下面
MessageBox(NULL,TEXT("输入正确,可以登录"),TEXT("Go"),MB_OK|MB_ICONINFORMATION);
hChild = CreateWnd(L"Child",TEXT("窗口风格管理"),WS_OVERLAPPED|WS_SYSMENU,DengLu);
MoveWindow(hChild,500,300,500,300,TRUE);
DisplayWnd(hChild);
}
}
break;//你这里忘了写break
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
LRESULT CALLBACK ChildProc(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(uMsg)
{
case WM_MOUSEWHEEL:
{
RECT rc,rc1;//rc获得窗口相对于桌面的矩形 rc1要调整的矩形
GetWindowRect(hWnd,&rc);
rc1=rc;//调整用的矩形先弄的和窗口矩形一样大
if((int)wParam<0)//往下滚轮,让窗口扩大
{
rc1.right=rc.right-rc.left +10;
rc1.bottom=rc.bottom-rc.top+10;
}
else
{
rc1.right=rc.right-rc.left-10;
rc1.bottom=rc.bottom-rc.top-10;
}
MoveWindow(hWnd,rc1.left, rc1.top,rc1.right,rc1.bottom,TRUE);
break;
}
case WM_CREATE:
{
ShowWindow(DengLu,SW_HIDE);
break;
}
case WM_SYSCOMMAND:
{
switch(wParam)
{
case SC_CLOSE:
{
ShowWindow(DengLu,SW_SHOW);
break;
}
}
}
break;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
来看看支持下。 仙仙,代码报错咯~{:5_91:}
另外,为什么不上传exe文件呢?{:5_92:}
c的痛苦之处,写个窗口 代码太多,不过学了很有用
学会API 在学mfc ~风介~ 发表于 2014-11-16 18:06
仙仙,代码报错咯~
不清楚啦,我这里运行的很好呀,这里又没显示建错项目,555~ 小人 发表于 2014-11-16 18:07
c的痛苦之处,写个窗口 代码太多,不过学了很有用
学会API 在学mfc
唉 拈花小仙 发表于 2014-11-16 18:13
不清楚啦,我这里运行的很好呀,这里又没显示建错项目,555~
那就把exe文件穿给介介看看吧~{:5_109:} ~风介~ 发表于 2014-11-16 18:18
那就把exe文件穿给介介看看吧~
嘻嘻,虽然有点菜啦,但是仙仙花了一下午时间写的
~风介~ 发表于 2014-11-16 18:18
那就把exe文件穿给介介看看吧~
介介建的是这个吗?
小人 发表于 2014-11-16 18:07
c的痛苦之处,写个窗口 代码太多,不过学了很有用
学会API 在学mfc
还是做不出来,唉 拈花小仙 发表于 2014-11-16 10:29
还是做不出来,唉
比我牛多了,{:9_240:} 小人 发表于 2014-11-16 18:32
比我牛多了,
我查了下两个函数都能实现,我只能按楼层给了,以后多答题呀。 拈花小仙 发表于 2014-11-16 10:37
我查了下两个函数都能实现,我只能按楼层给了,以后多答题呀。
没事,我帮助别人的同时 也给自己涨姿势 多接触 加深印象{:9_217:} 拈花小仙 发表于 2014-11-16 18:21
嘻嘻,虽然有点菜啦,但是仙仙花了一下午时间写的
怎么会!介介都看不懂~{:5_109:} 拈花小仙 发表于 2014-11-16 18:22
介介建的是这个吗?
没错哟!哈哈~待我有时间慢慢查bug~{:7_139:} ~风介~ 发表于 2014-11-16 18:43
怎么会!介介都看不懂~
{:7_139:}介介会QT,学这个半个月因该就会了 ~风介~ 发表于 2014-11-16 18:44
没错哟!哈哈~待我有时间慢慢查bug~
{:7_131:} 楼主好样的! {:1_1:},,支持呵呵。。。