鱼C论坛

 找回密码
 立即注册
查看: 2337|回复: 3

[技术交流] API创建窗口,程序体积缩小到4KB---

[复制链接]
发表于 2014-11-30 14:50:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x

VC2008-VC2013只要重新定义函数入口程序体积马上下降-

#include <windows.h>
#pragma comment(linker, "/ENTRY:EntryPoint") //定义入口函数
//窗口回调函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM Lparar);
//窗口WinMain函数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,  LPSTR lpCmdLine,  int nShowCmd);
void EntryPoint()
{
        //中止一个进程
        ExitProcess(WinMain(GetModuleHandle(NULL), NULL, (LPSTR)GetCommandLine(), SW_SHOWNORMAL));
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
        HWND hWnd;//窗口句柄
        MSG sMsg;//消息结构
        WNDCLASSEX sWndClassEx;//窗口类结构
        /*=========================================*/
        sWndClassEx.cbSize = sizeof(sWndClassEx);//获取结构大小赋值
        sWndClassEx.style = CS_VREDRAW | CS_HREDRAW;//窗口重绘风格 垂直 水平
        sWndClassEx.lpfnWndProc = (WNDPROC)WndProc;//回调函数
        sWndClassEx.cbClsExtra = 0;
        sWndClassEx.cbWndExtra = 0;
        sWndClassEx.hInstance = hInstance;
        sWndClassEx.hIcon = LoadIcon(NULL, IDI_APPLICATION);//图标
        sWndClassEx.hCursor = LoadCursor(NULL, IDC_ARROW);//鼠标指针
        sWndClassEx.hbrBackground = (HBRUSH)(COLOR_WINDOW);//背景
        sWndClassEx.lpszMenuName = NULL;
        sWndClassEx.lpszClassName = TEXT("MiniWinGUI");
        sWndClassEx.hIconSm = NULL;
        if (RegisterClassEx(&sWndClassEx))
        {
                hWnd = CreateWindowEx(0, TEXT("MiniWinGUI"), TEXT("MiniWinGUI"), WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                        NULL, NULL, hInstance, NULL);
        }
        if (!hWnd)
        {
                return 0;
        }

        ShowWindow(hWnd, nShowCmd);//显示窗口
        UpdateWindow(hWnd);//刷新窗口
        //消息循环
        while (GetMessage(&sMsg, NULL, 0, 0))
        {
                TranslateMessage(&sMsg);
                DispatchMessage(&sMsg);
        }
        return((int)sMsg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

        if (message == WM_DESTROY)//窗口销毁
        {
                PostQuitMessage(0);
        }

        return DefWindowProc(hWnd, message, wParam, lParam);


}

NewImage.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-8 15:05:46 | 显示全部楼层
感谢楼主的分享!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-11 17:51:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-23 21:39:31 | 显示全部楼层
LZ您知道这样做的具体原理是什么呢?为什么微软不这么用呢?
求高人指点!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 05:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表