用C++设计的一个控制台程序如何改成windows窗口程序呢?

cdws7187 2008-09-10 10:38:07
我学了一点windows程序设计,但是感觉只知道调用系统函数来实现系统功能不知道如何实现用C++写控制台程序时自己编写的功能,我就是想知道能不能把自己用C++编写的控制台程序转换成windows窗口程序?程序的功能是一样的,只不过多了个窗口实现了消息循环,我的意思大概就是想让程序看起来炫一点但是程序实现的功能依然是靠自己用编C++编写的,图形界面只是为了好看~
...全文
1513 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyu2202863 2008-09-11
  • 打赏
  • 举报
回复
楼上大哥,mfc是用C++的思想来用API的,API才是主要
11000000 2008-09-11
  • 打赏
  • 举报
回复

还是mfc比较好。api要慢慢上手才行。
laojifuli 2008-09-11
  • 打赏
  • 举报
回复
wndcls.lpszClassName="sunxin2006";
这句写错了,"sunxin2006"要替换成"大家好才是真的好"
laojifuli 2008-09-11
  • 打赏
  • 举报
回复
首先建立cpp文件,然后如下代码




#include <windows.h>
#include <stdio.h>
(//窗口过程函数声明
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
(//入口函数如同main()
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{//设计窗口类,对结构体副值
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="sunxin2006";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
//注册窗口类
RegisterClass(&wndcls);
//创建窗口
HWND hwnd;
hwnd=CreateWindow("大家好才是真的好","大家都很好",WS_OVERLAPPEDWINDOW,
0,0,600,400,NULL,NULL,hInstance,NULL);
//显示窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
//更新窗口
UpdateWindow(hwnd);
//自己制作消息循环(鼠标,键盘输出的消息)
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//收到消息后分情况处理消息(鼠标,键盘输出的消息)
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_CHAR://输出按下的字符
char szChar[20];
sprintf(szChar,"char code is %d",wParam);
MessageBox(hwnd,szChar,"char",0);
break;
case WM_LBUTTONDOWN://输出你好
MessageBox(hwnd,"mouse clicked","message",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,50,"你好",strlen("你好"));
//ReleaseDC(hwnd,hdc);
break;
case WM_CLOSE://退出程序
if(IDYES==MessageBox(hwnd,"真的结束?","message",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
paerxiushi 2008-09-11
  • 打赏
  • 举报
回复
以下这段代码可以不显示控制台,很是邪门:
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"wmainCRTStartup\"")
这样一来,项目变成Win32工程了

另外,可以使用FreeConsole将控制台释放掉,只不过程序开始运行时会闪烁.
aj3423 2008-09-10
  • 打赏
  • 举报
回复
图形界面程序和console没什么不同,你只要把console的代码复制下,新建一个win32 helloworld,然后把代码复制进去就ok,加一个richedit用来输出信息
ke2007lin 2008-09-10
  • 打赏
  • 举报
回复
API
biaozai06 2008-09-10
  • 打赏
  • 举报
回复
MFC!
VsirSoft 2008-09-10
  • 打赏
  • 举报
回复
控制台程序-》对话框程序 可以用richedit来代替你的输出。

其他如果想美化窗口,是一些界面制作的技巧。可以自绘。自绘其实就是把一些图贴到对话框上。简单点就是这样。也可以借助一些换肤工具,比如skin++的1.0破解版 都是加入文件几行代码就可以换肤的
vc1000 2008-09-10
  • 打赏
  • 举报
回复
你要做界面的话可以用WIN32API来做,程序的功能完全是可以复制过去的

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧