我有控制台应用程序在c。 我想转换成窗口应用程序,请引导我,让我可以做到这一点。
您需要采取的步骤概述:
前两个很容易,大部分工作在下一步。 如果您希望窗口只是您自己的控制台复制,则可以设计一个包含一个文本或编辑控件的对话框,并实现一个简单的对话框过程和一个消息循环。 一些代码片段随之而来,但是提供完整的工作示例将超出合理的空间。 如果你了解下面的代码,我想它应该让你开始。 如果没有,恐怕你必须先学习Windows编程基础知识。
HWND consoleEditHWnd; static int CALLBACK ConsoleDlgProc(HWND hDlg,UINT消息,WPARAM wParam,LPARAM lParam) { 开关(信息) { 情况WM_INITDIALOG: { InitWindow((HINSTANCE)hInstApp,hDlg); consoleEditHWnd = GetDlgItem(hDlg,IDC_CONSOLE_EDIT); 返回TRUE; } 情况WM_SIZE: 如果(consoleEditHWnd) { RECT矩形; GetClientRect(hDlg,&rect); 的MoveWindow( consoleEditHWnd,rect.left,rect.top, rect.right - rect.left,rect.bottom - rect.top,TRUE ); } 打破; } 返回FALSE; }
hwndApp = CreateDialog(hInst,MAKEINTRESOURCE(IDD_CONSOLE),NULL,ConsoleDlgProc); 的ShowWindow((HWND)hwndApp,SW_SHOW); UpdateWindow((HWND)hwndApp); 味精味精; while(PeekMessage(&msg,0,0,0,PM_REMOVE)) { 的TranslateMessage(MSG); DispatchMessage函数(MSG); }
当你想添加一些文本到“控制台”,你可以使用它
int count = GetWindowTextLengthW(consoleEditHWnd); 分配一个缓冲区 GetWindowTextW(consoleEditHWnd,缓冲液,计数+ newTextSize); ...追加 SetWindowTextW(consoleEditHWnd,缓冲液);
这是一个巨大的话题,需要单独讨论。 你可能想学习一些GUI工具包。 Qt或wxWidgets会做(尽管它们是用C ++编写的,而不是C)。 如果您正在进行C跨平台开发,您可以看看GTK +。 如果您计划只编写Windows程序,则可以学习Windows API。 无论你选择哪种方式,都有大量的文档,但是每一种方式都需要大量的学习,这里不能解释。