当我在 C++ 中编程时,我注意到在接受控制台输入时出现了一些奇怪的行为。让我解释。
#include <iostream>
int main(int argc, char *argv[]) {
if (argc == 1) {
std::cout << "Hello!\n";
}
if (argc >= 2) {
}
}
Run Code Online (Sandbox Code Playgroud)
非常简单的程序,对吧?现在,当我输入“programName ^”时,我收到一条神秘的消息,说“更多?” 在控制台窗口上。按 Enter 后,它会再次提示,再按一次它会关闭应用程序。
出于好奇,我尝试在我制作的其他一些控制台输入应用程序上执行此操作,它们都执行此操作。“更多”是什么意思?意思是?我从来没有编写过它,那为什么它在那里呢?
我正在使用 win32 API,并使用它来制作一个窗口。该窗口可以工作,但是当我打开它时,光标是加载光标,每次我将光标移至边缘以调整其大小时,光标都会“卡住”,因为调整光标大小时,它不会恢复正常。这是一个视频来解释我在说什么:
这是可重现的示例(使用 编译g++ reproducible_example.cpp -mwindows -O3 -o reproducible_example.exe):
#undef UNICODE
#undef _UNICODE
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
bool isRunning = true;
void *buffer; // buffer memory
BITMAPINFO bmi; // bit map information, needed for rendering
int width, height; // main window's width and height
LRESULT __stdcall WindowProc(HWND, UINT, WPARAM, LPARAM);
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR pCmdLine, int nCmdShow) {
LPCSTR CLASS_NAME = "Class Name";
WNDCLASS wc = {};
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName …Run Code Online (Sandbox Code Playgroud)