c语言控制台界面
① c语言如何写出一个图形化的界面,难道只能是黑白的win32控制台程序么
控制台字符界面,只要是字符来进通信。win32
只要是用来开发主流windows程序的。一步一步来看:首先从函数接口:int
main(int
argc,
char
*argv[])单单的一个入口点,两个参数就是,命令行参数。一个数组和一个整形。说实话让我来说我也说不出来这个
int
main有什么可讲的。重点讲一讲这个winmainint
winapi
winmain(hinstance
hinstance,hinstance
hprevinstance,lpstr
lpcmdline,int
ncmdshow)在你创建win32程序的时候,入口点是这个:所以,系统在加载你的程序进入内存的时候cs:ip在完成程序初始化之后就会指向这个winmain
首地址。我看来看参数:
hinstance是windows
为每一个win32程序分配的实例化句柄(用来管理程序的一个标识符)hprevinstance前一个执行实体的执行实体句柄
lpcmdline
同样,命令行ncmdshow
状态。-----------------------简而言之,一般的c编译器默认都会用main
来作为程序入口,这个规范。但是windows为了方便程序的内存管理或者是图形界面的管理。重新自定义了一个入口函数,当然编译器肯定要重新编写了,因为这个一个新的规范。参数即是为了管理程序的。基本上每一个windows程序都会有一个winmain
。以前写过mrp的手机程序。int
tmain(int
x,int
y,int
flags)显而易见,这个触屏的坐标个触发的事件。
我相信你已经懂了。如果你想研究win32参数具体作用,那么推荐一本
② C语言图形界面怎么做出来
这是最简单的界面程序://c++.cpp:定义应用程序的入口点。
//
#include"stdafx.h"
#include"c++.h"
#defineMAX_LOADSTRING100
//全局变量:
HINSTANCEhInst; //当前实例
TCHARszTitle[MAX_LOADSTRING]; //标题栏文本
TCHARszWindowClass[MAX_LOADSTRING]; //主窗口类名
//此代码模块中包含的函数的前向声明:
ATOM MyRegisterClass(HINSTANCEhInstance);
BOOL InitInstance(HINSTANCE,int);
LRESULTCALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
INT_PTRCALLBACK About(HWND,UINT,WPARAM,LPARAM);
intAPIENTRY_tWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPTSTRlpCmdLine,
intnCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
//TODO:在此放置代码。
MSGmsg;
HACCELhAccelTable;
//初始化全局字符串
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_C,szWindowClass,MAX_LOADSTRING);
MyRegisterClass(hInstance);
//执行应用程序初始化:
if(!InitInstance(hInstance,nCmdShow))
{
returnFALSE;
}
hAccelTable=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDC_C));
//主消息循环:
while(GetMessage(&msg,NULL,0,0))
{
if(!TranslateAccelerator(msg.hwnd,hAccelTable,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return(int)msg.wParam;
}
//
//函数:MyRegisterClass()
//
//目的:注册窗口类。
//
//注释:
//
//仅当希望
//此代码与添加到Windows95中的“RegisterClassEx”
//函数之前的Win32系统兼容时,才需要此函数及其用法。调用此函数十分重要,
//这样应用程序就可以获得关联的
//“格式正确的”小图标。
//
ATOMMyRegisterClass(HINSTANCEhInstance)
{
WNDCLASSEXwcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style =CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc =WndProc;
wcex.cbClsExtra =0;
wcex.cbWndExtra =0;
wcex.hInstance =hInstance;
wcex.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_C));
wcex.hCursor =LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground =(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName =MAKEINTRESOURCE(IDC_C);
wcex.lpszClassName =szWindowClass;
wcex.hIconSm =LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_SMALL));
returnRegisterClassEx(&wcex);
}
//
//函数:InitInstance(HINSTANCE,int)
//
//目的:保存实例句柄并创建主窗口
//
//注释:
//
//在此函数中,我们在全局变量中保存实例句柄并
//创建和显示主程序窗口。
//
BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)
{
HWNDhWnd;
hInst=hInstance;//将实例句柄存储在全局变量中
hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd)
{
returnFALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
returnTRUE;
}
//
//函数:WndProc(HWND,UINT,WPARAM,LPARAM)
//
//目的:处理主窗口的消息。
//
//WM_COMMAND -处理应用程序菜单
//WM_PAINT -绘制主窗口
//WM_DESTROY -发送退出消息并返回
//
//
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
intwmId,wmEvent;
PAINTSTRUCTps;
HDChdc;
switch(message)
{
caseWM_COMMAND:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam);
//分析菜单选择:
switch(wmId)
{
caseIDM_ABOUT:
DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);
break;
caseIDM_EXIT:
DestroyWindow(hWnd);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
break;
caseWM_PAINT:
hdc=BeginPaint(hWnd,&ps);
//TODO:在此添加任意绘图代码...
EndPaint(hWnd,&ps);
break;
caseWM_DESTROY:
PostQuitMessage(0);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
return0;
}
//“关于”框的消息处理程序。
INT_PTRCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam)
{
UNREFERENCED_PARAMETER(lParam);
switch(message)
{
caseWM_INITDIALOG:
return(INT_PTR)TRUE;
caseWM_COMMAND:
if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)
{
EndDialog(hDlg,LOWORD(wParam));
return(INT_PTR)TRUE;
}
break;
}
return(INT_PTR)FALSE;
}
③ C语言 控制台程序
不想调用控制台入口换winmain
底层的编译,在编译成目标文件之后,不要链接成可执行文件,生成别的
二进制文件
或者。。像
Linux内核
一样,编译成可执行文件,装载入内存,然后用内存镜像拷贝出纯二进制文件。。等等方法
至于编译驱动有另外更加专业的方法咯。。
④ C语言控制台程序如何自定义窗口大小(VC6.0中)比如最大化控制台窗口,想着能多输出点东西哈
调整控制台大小 右键控制台上边框就可以看到设置选项
要多输出东西 建议使用输出到文件
⑤ 什么是C语言控制台
C语言控制台就是C语言在新建工程时选的一种工程类型,称为Win32控制台应用程序。
控制台应用程序就是模拟DOS环境下运行的程序。
建立Win32控制台应用程序的过程如下:
新建项目--->Win32--->Win32控制台应用程序
建立完控制台应用程序后,就可以在新建的源文件中输入C语言程序,经编译完成后就可以运行在DOS环境中运行(即黑框)。
⑥ 请教一个问题 请问C语言运行的界面要怎样才能更改或是建立一个美观的界面~
C的默认控制台是黑底白字的,你可以点开控制台左上方的图标选其中的默认值或其他,你就可以更改控制台界面的颜色后及字体大小和颜色。
⑦ 我的C语言使用控制台编程之后,怎么能够让控制台界面在程序执行完毕之后保留在桌面
可以使用系统函数system("pause");进行暂停。
1、system函数:
原型:int system(const char * command);
功能:执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令,参数字符串command为命令名;
说明:在windows系统中,system函数直接在控制台调用一个command命令。在Linux/Unix系统中,system函数会调用fork函数产生子进程,由子进程来执行command命令,命令执行完后随即返回原调用的进程;
头文件:stdlib.h;
返回值:命令执行成功返回0,执行失败返回-1。
2、例程:
#include<stdio.h>
#include<stdlib.h>
intmain(){
system("pause");//暂停
return0;
}
⑧ C语言中的控制台指的是什么
1.关于C中没有控件的问题: 你看的是谭浩强的书,那个上面的程序都是控制台应用程序,也就是你说的DOS界面下面的程序,程序的入口时main函数。的确是没办法达到你所说的控件。但是C在开发窗体应用程序时是可以达到VB的那种效果的,用的是WINAPI,程序的入口就是WinMain函数了,只不过开发过程繁琐,但是效率高,当中从创建窗口,注册窗口,显示窗口……全是用代码完成的,想了解的话看《Windows程序设计》这本书。 当然微软为了效率考虑,封装成了MFC,开发的形式就更像VB 了。 2.关于c++ c++2008,VB VB2008的问题: 语言和开发环境是不一样的,一定不能混淆。你说的c++2008 应该指的是开发环境 VS2008 吧,你说VB与VB2008基本上完全不一样,是没错,因为在VB6下面还是VB ,但是到了之后的版本,是VB.NET 二者的差别可不是一般的大,完全没有血缘关系。。。 而C++是一门语言,与VC VC2008 等开发环境是不一样的。 再者,是你说的关于老版本的VB6 ,以及VC6 是否会被淘汰的问题,正如我上面说的,你掌握的是一门语言的话,无论在什么样的开发环境下面,影响不是很大。 3.给你的一小点学习建议: 如果你现在基础不是太好的话,踏踏实实的跟着谭的书学C吧,DOS界面是有点。。。但是不要急于求成,把语法熟悉了,算法跟上了,程序思维清晰了。以后学习才轻松,不然你现在直接去学比如说Windows程序设计,没有C的基础还是相当困难的,这就像学武功先扎马步一样的。一个道理。 希望对你有所帮助。
⑨ C语言 怎么使控制台窗口大小固定不变
啊是发说的 提供的方法有效,但在VC++6.0中GetConsoleWindow()无法通过编译
经查询并添加头文件、声明等之后均无法使用
后将GetConsoleWindow()换为FindWindow(), 亲测可用
例如:SetWindowLong(FindWindow("ConsoleWindowClass", NULL),GWL_STYLE,GetWindowLong(FindWindow("ConsoleWindowClass", NULL),GWL_STYLE) & ~WS_SIZEBOX & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX);
已经实现隐藏最大化按钮
FindWindow()也能获取控制台窗口句柄,内含两个参数,具体可网络
参考链接:网页链接
C语言、VC++6.0编译
⑩ C语言 设置控制台窗口的位置。
1.gotoxy函数:
原型:extern void gotoxy(int x, int y);
用法:#include <system.h>
功能:将光标移动到指定位置说明:gotoxy(x,y)将光标移动到指定行y和列x。设置光标到文本屏幕的指定位置,其中参数x,y为文本屏幕的坐标。
gotoxy(0,0)将光标移动到屏幕左上角
2.例程(下面这个例子将在屏幕中央输出“hello world”):
#include <conio.h>
int main(){
clrscr(); //清除屏幕
gotoxy(35, 12); //挪动鼠标到屏幕中央
cputs("Hello world");
getch();
return 0;
}