asysbang

 找回密码
 立即注册
查看: 3924|回复: 0
打印 上一主题 下一主题

code

[复制链接]

520

主题

2

好友

6551

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-9-16 19:34:54 |只看该作者 |倒序浏览



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2026-1-28 20:54 , Processed in 0.058911 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部