asysbang
标题:
code
[打印本页]
作者:
admin
时间:
2019-9-16 19:34
标题:
code
[attach]152[/attach]
//============================================================================
// Name : ai_note.cpp
// Author :
asysbang@163.com
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include "ai_note.h"
using namespace std;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
HBITMAP bi = LoadBitmap(hInstance, "icon.png");
BITMAP bmp;
GetObject(bi,sizeof(BITMAP),(LPVOID)&bmp);
cout << "====" <<bmp.bmWidth<<endl;
int ID_ICON;
MAKEINTRESOURCE(ID_ICON);
HICON ion = LoadIcon(hInstance, "icon.png");
wndclass.style = CS_HREDRAW | CS_VREDRAW | ES_CENTER; //窗口样式
wndclass.lpfnWndProc = WndProc; //窗口的回调函数
wndclass.hInstance = hInstance; //窗口实例句柄
wndclass.cbClsExtra = 0; //窗口结构体扩展:无
wndclass.cbWndExtra = 0; //窗口实例扩展:无
wndclass.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH); //窗口背景
wndclass.hIcon = NULL; //窗口图标
wndclass.hCursor = LoadCursor( NULL, IDC_ARROW); //窗口中的鼠标样式
wndclass.lpszClassName = mainWindowName; //窗口结构体名称
wndclass.lpszMenuName = NULL; //主菜单名称:无
/* 注册窗口结构体 */
if (!RegisterClass(&wndclass)) {
MessageBox( NULL, TEXT("无法注册窗口结构体!"), TEXT("错误"), MB_OK | MB_ICONERROR);
return 0;
}
int scrWidth = GetSystemMetrics(SM_CXSCREEN);
int scrHeight = GetSystemMetrics(SM_CYSCREEN);
int winLeft = (scrWidth - mainWindowWidth) / 2;
int winTop = (scrHeight - mainWindowHeight) / 2;
/* 创建Login窗口 */
hwnd =
CreateWindow ( mainWindowName, mainWindowName, WS_OVERLAPPEDWINDOW , winLeft, winTop, mainWindowWidth, mainWindowHeight, NULL, NULL, hInstance, NULL );
/* 显示与更新窗口 */
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
/* 从消息队列中获取消息 */
while ( GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg); //将虚拟键消息转换为字符消息
DispatchMessage(&msg); //将消息传递给回调函数处理
}
return msg.wParam;
return 0;
}
/* 回调函数 */
LRESULT CALLBACK WndProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) {
static HWND hChild[2];
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
static int cxChar, cyChar;
switch (umsg) {
case WM_CREATE: //处理窗口创建成功后发来的消息
/* 创建窗口控件 */
CreateChildWindow(hwnd, hChild, lParam);
cxChar = LOWORD(GetDialogBaseUnits()); //获得窗口中内定字体字元宽度(低字组)
cyChar = HIWORD(GetDialogBaseUnits()); //或得窗口中内定字体字元高度(高字组)
return 0;
case WM_SIZE: //处理窗口尺寸发生改变后发来的消息
GetClientRect(hwnd, &rect);
MoveWindow(hChild[ ID_UserName], rect.left + cxChar * 12, 110, cxChar * 24, cyChar * 5 / 4, TRUE);
MoveWindow(hChild[ ID_Password], rect.left + cxChar * 12, 160, cxChar * 24, cyChar * 5 / 4, TRUE);
MoveWindow(hChild[ ID_btnLogin], rect.left + cxChar * 12, 210, cxChar * 12, cyChar * 7 / 4, TRUE);
return 0;
case WM_PAINT: //处理窗口产生无效区域时发来的消息
GetClientRect(hwnd, &rect);
hdc = BeginPaint(hwnd, &ps);
TextOut(hdc, rect.left + cxChar * 12, 95, TEXT("UserName:"), lstrlen(TEXT("UserName:")));
TextOut(hdc, rect.left + cxChar * 12, 145, TEXT("Password:"), lstrlen(TEXT("Password:")));
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY: //处理窗口关闭时发来的消息
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, umsg, wParam, lParam);
}
/* 创建控件 */
int CreateChildWindow(HWND hwnd, HWND * hChild, LPARAM lParam) {
HINSTANCE hInst = ((LPCREATESTRUCT) lParam)->hInstance;
/* 创建UserName文本框 */
hChild[ ID_UserName] = CreateWindow ( TEXT ("edit"), NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT,
0, 0, 0 , 0,
hwnd, ( HMENU ) ID_UserName, hInst, NULL );
/* 创建Password文本框 */
hChild[ ID_Password] = CreateWindow ( TEXT ("edit"), NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT,
0, 0, 0, 0,
hwnd, ( HMENU ) ID_Password, hInst, NULL );
/* 创建Login按钮 */
hChild[ ID_btnLogin] = CreateWindow ( TEXT ("button"), TEXT ("Login"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_CENTER,
0, 0, 0, 0,
hwnd, ( HMENU ) ID_btnLogin, hInst, NULL );
return 0;
}
欢迎光临 asysbang (http://www.asysbang.com/)
Powered by Discuz! X2.5