• mingw-gcc编译窗体和console


    下面这段程序,如果用-mconsole选项编译,出来的窗体就会带上命令行,用-mwindows则不会有。

    #include 
    
    /* This is where all the input to the window goes to */
    LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    	switch(Message) {
    		
    		/* Upon destruction, tell the main thread to stop */
    		case WM_DESTROY: {
    			PostQuitMessage(0);
    			break;
    		}
    		
    		/* All other messages (a lot of them) are processed using default procedures */
    		default:
    			return DefWindowProc(hwnd, Message, wParam, lParam);
    	}
    	return 0;
    }
    
    /* The 'main' function of Win32 GUI programs: this is where execution starts */
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    	WNDCLASSEX wc; /* A properties struct of our window */
    	HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
    	MSG msg; /* A temporary location for all messages */
    
    	/* zero out the struct and set the stuff we want to modify */
    	memset(&wc,0,sizeof(wc));
    	wc.cbSize		 = sizeof(WNDCLASSEX);
    	wc.lpfnWndProc	 = WndProc; /* This is where we will send messages to */
    	wc.hInstance	 = hInstance;
    	wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);
    	
    	/* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */
    	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    	wc.lpszClassName = "WindowClass";
    	wc.hIcon		 = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
    	wc.hIconSm		 = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */
    
    	if(!RegisterClassEx(&wc)) {
    		MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
    		return 0;
    	}
    
    	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
    		CW_USEDEFAULT, /* x */
    		CW_USEDEFAULT, /* y */
    		640, /* width */
    		480, /* height */
    		NULL,NULL,hInstance,NULL);
    
    	if(hwnd == NULL) {
    		MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
    		return 0;
    	}
    
    	/*
    		This is the heart of our program where all input is processed and 
    		sent to WndProc. Note that GetMessage blocks code flow until it receives something, so
    		this loop will not produce unreasonably high CPU usage
    	*/
    	while(GetMessage(&msg, NULL, 0, 0) > 0) { /* If no error is received... */
    		TranslateMessage(&msg); /* Translate key codes to chars if present */
    		DispatchMessage(&msg); /* Send it to WndProc */
    	}
    	return msg.wParam;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
  • 相关阅读:
    Nginx版本升级
    Jmeter性能测试:高并发分布式性能测试
    机器学习概述
    【DB运营管理/开发解决方案】上海道宁为您提供提高工作便利性的集成开发工具——Orange
    【云原生 | 从零开始学Kubernetes】十三、k8s的容器探测以及启动探测
    SQL ALTER TABLE 语句||SQL AUTO INCREMENT 字段
    OpenCV(opencv_apps)在ROS中的视频图像的应用(重点讲解哈里斯角点的检测)
    threejs窗口变化重新自适应加载
    软件报错msvcr120.dll丢失怎么办?五个有效修复方法分享
    巡检自动化=selenium+截图+接口
  • 原文地址:https://blog.csdn.net/qq_51470638/article/details/134474310