WinMain中的Console与main中的Window
#include <windows.h>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
DWORD dwBytesWritten; char temp[1];
char* msg1 = "第一条消息/n";
char* msg2 = "第二条消息/n";
char* msg3 = "第三条消息./n";
char* msg4 = "第四条消息/n";
char* msg5 = "第五条消息/n";
//新建一个Console
AllocConsole();
//获得标准输出的Handle
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
//向标准输出中写入数据
WriteFile(handle, msg1, strlen(msg1), &dwBytesWritten, NULL);
WriteFile(handle, msg2, strlen(msg2), &dwBytesWritten, NULL);
//从文件Handle获得FD
int hCrt = _open_osfhandle((long)handle,_O_TEXT);
//标准C函数调用
write(hCrt, msg3, strlen(msg3));
FILE * hf = _fdopen( hCrt, "w" );
char buf[2];
setvbuf( hf, buf, _IONBF, 1 );
//绑定hf至标准输出
*stdout = *hf;
fprintf(hf, msg4);
printf(msg5);
//获得标准输入
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE); // return an OS file handle
ReadFile(hIn, temp, 1, &dwBytesWritten, NULL);
//释放Console
FreeConsole();
return (0);
}
|
#include <windows.h>
#include <stdio.h>
DWORD WINAPI mainGUI( LPVOID lp)
{
HMODULE hInstance= 0;
hInstance = GetModuleHandle(NULL);
HWND hWnd;
MSG msg;
//创建一个新的窗口
hWnd = CreateWindow("EDIT",
"由main创建的消息",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,NULL,
hInstance,
NULL);
if (!hWnd)
return (1);
//绑定hWnd与hWindow,向hWindow发送的消息由此线程处理
*(HWND*)lp = hWnd;
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
int main(int argc, char* argv[])
{
DWORD ID; HWND hWindow;
char szOutput[64];
CreateThread(NULL,0,mainGUI, &hWindow, NULL,&ID);
printf("This console created the window above./n ");
while (true) {
scanf("%s", szOutput);
if (!strcmp(szOutput, "quit"))
break;
//发送WM_SETTEXT消息
SendMessage(hWindow,WM_SETTEXT, strlen(szOutput), (LPARAM)szOutput);
}
return 0;
}
|
WinMain中的Console与main中的Window相关推荐
- 在WinMain中嵌Console窗口
很多时候,调试GUI程序是很不方便的,通常的做法是使用MessageBox,但是作为一个模态窗口,它经常产生不必要的消息,比如killfocus, setfocus或者paint,从而影响调试的执行过 ...
- main方法_错误: 在类 ZiFUChuan.Pyramid 中找不到 main 方法, 请将 main 方法定义为:
错误: 在类 ZiFUChuan.Pyramid 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 Java ...
- 解决用C#在visual studio编程中,console一闪而过
解决用C#在visual studio编程中,console一闪而过. 解决办法: 在主方法的最后加:Console.ReadLine(); 转载于:https://blog.51cto.com/wa ...
- golang 中的 init 和 main函数
首先我们看一个例子:init函数: init 函数可在package main中,可在其他package中,可在同一个package中出现多次. main函数 main 函数只能在package ma ...
- javascript中的console.log有什么作用?
javascript中的console.log有什么作用? 主要是方便你调式javascript用的.你可以看到你在页面中输出的内容. 相比alert他的优点是: 他能看到结构话的东西,如果是aler ...
- pycharm中的console退出问题以及console和pycharm各自运行结果不一样的问题
pycharm中代码: def outer(some_func):def inner():print "before some_func"ret = some_func() # 1 ...
- java.线程池 线程数_如何在线程“ main”中修复异常java.lang.NoClassDefFoundError:Java中的org / slf4j / LoggerFactory...
java.线程池 线程数 此错误表示您的代码或您在应用程序中使用的任何外部库都在使用SLF4J库 (一个开放源代码日志记录库),但无法找到所需的JAR文件,例如slf4j-api-1.7.2.jar因 ...
- 如何在线程“ main”中修复异常java.lang.NoClassDefFoundError:Java中的org / slf4j / LoggerFactory...
此错误表示您的代码或您在应用程序中使用的任何外部库都在使用SLF4J库 (一个开放源代码日志记录库),但无法找到所需的JAR文件,例如slf4j-api-1.7.2.jar因此它是在线程" ...
- eclipse中在类saolei.Test 中找不到main方法
粉丝提问:eclipse中在类saolei.Test 中找不到main方法 解决办法: eclipse设置自动保存或者CTRL+S 建议使用更加智能的编译器IDEA
最新文章
- 机器学习的若干问题解释
- android按钮随机数,Android随机数
- iOS自定义的UISwitch按钮
- 深层高斯过程最新综述:全面阐述高斯过程的核心动机、数学公式和局限性
- Json字符串转对象,使用ObjectMapper方式报错:no String-argument constructor/factory method
- 手把手教你Android手机与BLE终端通信--连接,发送和接收数据
- Hive利用正则Serde导入文件
- MXY-API管理系统安装教程
- 光敏传感器实验报告_光敏电阻的光敏特性研究实验报告.doc
- WordPress非组件实现文章阅读次数-不会php还逞强不用组件的我把网站给玩坏了 ( ̄ー ̄〃)
- 科技部:中国131家独角兽企业 名单文字版
- (十四)单词之各动词讲解
- 数商云化妆品行业电商平台系统解决方案
- python快速接手别人的代码_Python 爬虫代码,网上找的别人的,但是报错,求高手指点...
- c语言编程怎么样,C语言怎么样,好学吗?
- 渗透测试SQL注入——Sqlilabs关卡详解
- Panda3D 初学者教程(一)
- 【财富空间】卡耐基梅隆首席科学家大卫·伯恩:机器人学与商业机遇
- php开启页面错误提示,php如何设置关闭网页错误提示
- declare究竟是什么