第1个回答 2024-12-03
在VC++6.0环境下创建C++窗口模式程序时,确实需要特别注意工程类型的设置。如果创建的工程是Win32 Console Application,而不是Win32 Application,那么程序将不会以窗口模式运行。正确的操作步骤如下:
首先,通过“新建”功能,选择“工程”选项卡,找到并选择“Win32 Application”。然后输入工程名称,创建一个空白工程。接着,在“文件”选项卡中新建一个C++ Source File,输入文件名并把代码复制进去。最后进行编译和执行。
如果按照楼上那位的说法,建议在建立工程时选择“MFC AppWizard(exe)”而非“Win32 Application”,这样可以使用MFC向导建立窗口,操作更为简便。然而,学习如何手动编写窗口程序也是非常必要的。
以下是一个简单的窗口实例代码:
#include "windows.h"
LONG WINAPI WNDFUN(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch (msg) { case WM_PAINT: { HDC hdc = GetDC(hWnd); SetBkMode(hdc, TRANSPARENT); TextOut(hdc, 20, 20, "窗口实例", sizeof("窗口实例") - 1); DeleteDC(hdc); break; } case WM_LBUTTONDOWN: { HDC hdc = GetDC(hWnd); SetBkMode(hdc, TRANSPARENT); TextOut(hdc, 20, 40, "单击左键", sizeof("单击左键") - 1); DeleteDC(hdc); break; } case WM_CLOSE: { DestroyWindow(hWnd); break; } case WM_DESTROY: { PostQuitMessage(0); break; } default: return DefWindowProc(hWnd, msg, wparam, lparam); } return 0; }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS wc; wc.style = CS_DBLCLKS | CS_VREDRAW | CS_HREDRAW; wc.lpfnWndProc = WNDFUN; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = NULL; wc.hCursor = NULL; wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); wc.lpszClassName = "CustomWnd"; RegisterClass(&wc); HWND hwnd = CreateWindow("CustomWnd", "Win32App", WS_OVERLAPPEDWINDOW, 100, 100, 300, 200, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; }