C++中,自行编写WindowApplication运行时为何会出现控制台窗口?我用Dev C++的 您好,那个DEV-C++用工程”(Windows Appli...

\u6211\u7528C++\u505a\u4e86\u4e2a\u7a97\u53e3\u7a0b\u5e8f\uff0c\u4f46\u6267\u884c\u540e\u4e3a\u4f55\u4f1a\u51fa\u73b0\u63a7\u5236\u53f0\uff1f\u6211\u7528\u7eafMinGW\u7684\u3002

\u4f60\u786e\u5b9a\u662f\u5728\u8fdb\u884cwindows\u7f16\u7a0b(\u4e0d\u4e00\u5b9a\u662fWinMain\uff0c\u90a3\u662fwindowsAPI\u7f16\u7a0b)\u3002
\u4f7f\u7528\u6b63\u786e\u7684\u53c2\u6570(\u6bd4\u5982\uff1a-mwindows)

#include
#include
/* \u4f7f\u7c7b\u540d\u6210\u4e3a\u5168\u5c40\u53d8\u91cf */
TCHAR szClassName[ ] = TEXT("WindowsApp");
/* \u8fd9\u4e2a\u51fd\u6570\u7531Windows\u51fd\u6570DispatchMessage()\u8c03\u7528 */
LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message) /* \u5904\u7406\u4fe1\u606f */
{
case WM_PAINT:
hdc = BeginPaint (hWnd, &ps) ;
GetClientRect (hWnd, &rect) ;
DrawText (hdc, TEXT ("Hello World!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hWnd, &ps) ;
break ;
case WM_DESTROY:
PostQuitMessage (0); /* \u53d1\u9001WM_QUIT\u5230\u6d88\u606f\u961f\u5217 */
break;
default: /* \u4e0d\u60f3\u5904\u7406\u7684\u6d88\u606f */
return DefWindowProc (hWnd, message, wParam, lParam);
}
return 0;
}
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
HWND hwnd; /* \u7a97\u53e3\u7684\u53e5\u67c4 */
MSG messages; /* \u7528\u4e8e\u50a8\u5b58\u5e94\u7528\u7a0b\u5e8f\u7684\u6d88\u606f */
WNDCLASSEX wincl; /* \u7a97\u53e3\u7c7b\u7684\u6570\u636e\u7ed3\u6784 */
/* \u7a97\u53e3\u7ed3\u6784 */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* \u88abWindows\u8c03\u7528\u7684\u51fd\u6570 */
wincl.style = CS_DBLCLKS; /* \u6355\u83b7\u53cc\u51fb\u4e8b\u4ef6 */
wincl.cbSize = sizeof (WNDCLASSEX);
/* \u4f7f\u7528\u9ed8\u8ba4\u7684\u56fe\u8868\u548c\u9f20\u6807\u6307\u9488 */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* \u6ca1\u6709\u83dc\u5355 */
wincl.cbClsExtra = 0; /* \u7a97\u53e3\u7c7b\u540e\u9762\u6ca1\u6709\u989d\u5916\u7684\u5b57\u8282 */
wincl.cbWndExtra = 0; /* \u7a97\u53e3\u5b9e\u4f8b\u5316\u7ed3\u6784 */
/* \u4f7f\u7528Windows\u7684\u9ed8\u8ba4\u989c\u8272\u4f5c\u4e3a\u7a97\u53e3\u7684\u80cc\u666f\u8272 */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* \u6ce8\u518c\u7a97\u53e3\u7c7b\uff0c\u5982\u679c\u5931\u8d25\uff0c\u9000\u51fa\u7a0b\u5e8f */
if (!RegisterClassEx (&wincl))
return 0;
/* \u5982\u679c\u7c7b\u88ab\u6ce8\u518c\uff0c\u521b\u5efa\u7a97\u53e3 */
hwnd = CreateWindowEx (
0, /* \u6269\u5c55\u7684\u53d8\u5316\u4fe1\u606f */
szClassName, /* \u7c7b\u540d */
TEXT("Windows App"), /* \u6807\u9898\u680f\u6587\u672c */
WS_OVERLAPPEDWINDOW, /* \u9ed8\u8ba4\u7a97\u53e3 */
CW_USEDEFAULT, /* \u4f7f\u7528\u9ed8\u8ba4\u7684\u4f4d\u7f6e */
CW_USEDEFAULT, /* \u4f7f\u7528\u9ed8\u8ba4\u7684\u4f4d\u7f6e */
544, /* \u7a97\u53e3\u5bbd\u5ea6\uff08\u4ee5\u50cf\u7d20\u70b9\u4e3a\u5355\u4f4d\uff09 */
375, /* \u7a97\u53e3\u9ad8\u5ea6\uff08\u4ee5\u50cf\u7d20\u70b9\u4e3a\u5355\u4f4d\uff09 */
HWND_DESKTOP, /* \u6b64\u7a97\u53e3\u662f\u684c\u9762\u7684\u5b57\u7a97\u53e3 */
NULL, /* \u6ca1\u6709\u83dc\u5355 */
hThisInstance, /* \u7a0b\u5e8f\u5b9e\u4f8b\u5316\u53e5\u67c4 */
NULL /* \u6ca1\u6709\u521b\u5efa\u6570\u636e\u7684\u7a97\u53e3 */
);
/* \u663e\u793a\u7a97\u53e3 */
ShowWindow (hwnd, nFunsterStil);
/* \u8fd0\u884c\u6d88\u606f\u5faa\u73af\u3002\u5b83\u5c06\u5728GetMessage()\u8fd4\u56de\u96f6\u7684\u65f6\u5019\u9000\u51fa */
while (GetMessage (&messages, NULL, 0, 0))
{
/* \u628a\u865a\u62df\u6309\u952e\u6d88\u606f\u7ffb\u8bd1\u6210\u5b57\u7b26\u6d88\u606f */
TranslateMessage(&messages);
/* \u628a\u6d88\u606f\u53d1\u9001\u5230WindowProcedure\u51fd\u6570 */
DispatchMessage(&messages);
}
/* \u7a0b\u5e8f\u7684\u8fd4\u56de\u503c\uff0c\u7531PostQuitMessage()\u63d0\u4f9b\u3002 */
return messages.wParam;
}

你直接运行你编译后的exe就不会有控制台窗口了。

现在是CodeBlock用控制台去调用了WinApplication

新建一个WindowsApplication,将编写好代码复制进去,编译执行就没有小黑窗了。此方法只能编译执行一次。第二次编译执行又会出现。

  • 姹備釜鐢c/c++缂栧啓windows绋嬪簭婧愪唬鐮
    绛旓細wndclass.lpfnWndProc=WndProc; wndclass.lpszClassName="Windows Fill"; wndclass.lpszMenuName=NULL; wndclass.style=CS_HREDRAW|CS_VREDRAW; return(RegisterClass(&wndclass));}BOOL InitWindows(HINSTANCE hInstance,int nCmdShow){ HWND hWnd; hWnd=CreateWindow( "Windows Fill", "Show_color", WS_OVERLAPPED...
  • 鐢C缂栧啓涓涓畝鍗曠殑绐楀彛鍑芥暟浠g爜?鍚勪綅澶т緺鎻愪緵涓涓
    绛旓細wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = 0; /* structure or the window instance */ /* Use Windows's default color as the background of the window */ wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;/* Register the windo...
  • 鐢C鎴朇++绋嬪簭缂栧啓鍙互鏌ョ湅window杩涚▼,CPU,鐢ㄦ埛鍚(娌″垎浜,澶у甯府蹇欏晩...
    绛旓細鎴戠粰浣犺鍑犱釜API鍚ц嚦浜庣▼搴忎綘鑷繁鍐欏惂:1鏌ョ湅杩涚▼鐢ㄥ埌鐨凙PI锛欳reateToolhelp32Snapshow:杩欎釜鍑芥暟鑾峰緱褰撳墠绯荤粺杩涚▼蹇収銆侾rocess32First:鑾峰緱蹇収涓殑绗竴涓繘绋嬨侾rocess32Next:閬嶅巻绯荤粺杩涚▼銆2鑾峰彇CPU淇℃伅鐢ㄥ埌鐨凙PI锛歂tQuerySystemInformation:杩欐槸涓狽ative API鍝︼紝浣跨敤鏃惰娉ㄦ剰鐨勩3鑾峰緱鐢ㄦ埛鍚嶇敤NetUserEnum...
  • 鍏勫紵浠,缁欐垜鎸囧紩涓涓嬪惂.鎴戝垰瀛︿範c璇█,浣嗘槸鎴戞兂缂栧啓鍥惧舰鐣岄潰,鎴戞兂缂栧啓...
    绛旓細濡傛灉浣犳槸鍦Windows骞冲彴涓婂涔狅紝閭f垜寤鸿浣犱娇鐢∕icrosoft Visual C++ 6.0锛屽氨鏄汉浠父璇寸殑VC6銆備竴鏉ワ紝瀹冭嚜甯︾殑宸ョ▼鍚戝灏辫兘鑷姩鐢熸垚澶氱甯哥敤鐨勫浘褰㈢晫闈紙鍗曟枃妗o紝澶氭枃妗e拰瀵硅瘽妗嗭級锛岀紪璇戝櫒浼氳嚜鍔ㄧ粰浣犵敓鎴怣FC鏋舵瀯涓嬬殑浠g爜锛屽緢鍊煎緱瀛︿範锛涗簩鏉ワ紝缃戜笂鍏充簬VC6鐨刾df鍜岀綉椤电殑瀛︿範鏉愭枡姣旇緝澶氾紝涓婃墜涔熶細蹇簺 ...
  • C璇█:鐢window.h杩欎釜澶存枃浠舵潵鍐杩愯椤甸潰宸︿笂瑙掔殑鍚嶅瓧,鍦ㄤ富鍑芥暟閭i噷...
    绛旓細SetConsoleTitle("123");鍘熷瀷锛氬弬鏁板氨涓涓瓧绗︿覆鍗冲彲 WINAPI SetConsoleTitle(LPCSTR lpConsoleTitle );
  • 鐢C璇█缂栧啓涓涓畝鍗曠殑鏂囨湰缂栬緫鍣.
    绛旓細鎴戠殑C璇█鏄嚜瀛︾殑锛屾噦涓灏忕偣銆傝櫧鐒舵垜娌℃湁浣犺鐨勯偅绉嶆簮浠g爜锛屼絾鎴戞湁璁颁簨鏈殑婧愪唬鐮侊紝浣犳兂鐪嬬湅鍚楋紵璁颁簨鏈紙涓荤▼搴忥級include <windows.h> include "sample.h"static char g_szClassName[] = "MyWindowClass";static HINSTANCE g_hInst = NULL;define IDC_MAIN_TEXT 1001 BOOL LoadFile(HWND h...
  • 缂栧啓鐨C璇█绋嬪簭,鎬庢牱鍒朵綔涓涓猆I鐣岄潰?
    绛旓細鍙互浣跨敤瀹冨湪Linux銆windows鍖呮嫭mac绛夌瓑鎿嶄綔绯荤粺涓婂仛ui绋嬪簭璁捐 涓涓畝鍗曠殑绀轰緥浠g爜濡備笅 include <gtk/gtk.h>int main(int argc,char **argv){ GtkWidget *win; GtkWidget *label; int i,j; GString *str; gtk_init(&argc,&argv); win=gtk_window_new(GTK_WINDOW_TOPLEVEL)...
  • 濡備綍鐢C鎴栬匔++缂栧啓涓涓數鑴戝己鍒跺叧鏈虹▼搴
    绛旓細BOOL SystemReboot();int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){ WNDCLASS wndclass={0};TCHAR* szClassName=TEXT("TestDlg");MSG msg={0}; COLORREF color=GetSysColor(COLOR_ACTIVEBORDER);HBRUSH hBrush=CreateSolidBrush(color);assert(hBrush); ...
  • 鑻规灉mac绯荤粺涓嬬殑c璇█缂栬瘧鍣ㄦ湁鏀寔鐢熸垚win绯荤粺EXE鏂囦欢鐨勫悧?_鐧惧害鐭 ...
    绛旓細褰撶劧鍙互銆侻AC绯荤粺鏄痜ree-bsd锛坲nix鐨勪竴绉嶅紑婧愮郴缁熷垎鏀級涓哄熀纭锛岄愭婕斿寲鑰屾潵鐨勩傚疄闄匨AC涔熸槸灞炰簬UNIX澶у鏃忋傚彧瑕佸畨瑁呬簡c鐨勭紪璇戝櫒锛屽氨鍙互鐢C缂栫▼銆傚綋鐒跺湪mac涓婏紝鑻规灉浠bject-c鎻愪緵浜嗕竴濂椾赴瀵岀殑api锛屽寘鎷鍏跺浘褰㈢晫闈㈢殑浜掑姩銆傛墍浠phone搴旂敤鎵嶉兘鐢╫bject-c缂栧啓銆傚鏋滀綘鐢╟鎯冲紑鍙憁ac涓婂拰window浜掑姩鐨勫簲鐢...
  • 鎬ユ眰涓涓c璇█缂栧啓鐨勫浘涔︾鐞嗙郴缁熺殑婧愪唬鐮,璋㈣阿
    绛旓細window(1,1,80,25);clrscr();printf("ID number:");scanf("%s",id);printf("name:");scanf("%s",name);printf("sex:");scanf("%s",sex);printf("grad:");scanf("%s",grad);p=fopen(id,"w+");if(p==NULL) { printf("can't build that user");getch();adm2();} fprintf...
  • 扩展阅读:初中生学c++ ... c++中<< ... 一节课教你学会c++视频 ... c++编程入门自学 ... c++免费视频教程 ... c++入门自学 ... 学习c++的视频 ... 专业c+好不好 ... c++编程 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网