求问用vs2010 怎么建一个GUI?

BoredNight 2011-07-11 11:15:07
才开始学c++,想写个小程序,只需要一个很简单的GUI,菜单按钮什么的,求指点怎么在vs2010里面写,或者给点类似的代码看看。 谢谢
...全文
778 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackyjkchen 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 borednight 的回复:]

谢谢~,问个问题,上面的代码我编译的时候“有无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用”,请问知道怎么解决么,是不是和我建的是win32控制台程序项目有关?
[/Quote]

windows程序设计是针对VC6的,用的是ANSI字符,你用VS2010要做两点
1.将字符集改成多字节
2.子系统选择WINDOWS

或者最简单的做法,直接用VS2010的想到建立一个WIN32工程,基本和楼上给的差不多,但更规范
yixianyu 2011-07-11
  • 打赏
  • 举报
回复

如果仅仅是应付工作学习任务,那么直接生成一个Visual Studio的win32项目,然后自己把直接生成的GUI界面资源整理得简单一些,再去学习源文件里的代码。
BoredNight 2011-07-11
  • 打赏
  • 举报
回复
谢谢~,问个问题,上面的代码我编译的时候“有无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用”,请问知道怎么解决么,是不是和我建的是win32控制台程序项目有关?
「已注销」 2011-07-11
  • 打赏
  • 举报
回复
先看《Windows程序设计》吧。
#include <Windows.h>
#include <tchar.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CREATE:
return 0;
case WM_PAINT:
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}

return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, PTSTR /*pszCmdLine*/, int /*nCmdShow*/)
{
WNDCLASSEX wcex;
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(NULL, IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = _T("Windows Demo Class");
wcex.hIconSm = wcex.hIcon;

if (!RegisterClassEx(&wcex))
{
MessageBox(NULL, _T("RegisterClassEx failed!"), _T("Windows Demo"), MB_ICONERROR);
return 0;
}

HWND hWnd = CreateWindowEx(WS_EX_APPWINDOW,
_T("Windows Demo Class"),
_T("Windows Demo"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);

MSG msg;
while (GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return (int)msg.wParam;
}

jackyjkchen 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 borednight 的回复:]

“有无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用”
这个问题解决了,是要把设置里面的console改成windows才能让winmain不出错。

谢谢抄书小儿,再问下win32项目里面怎么再改GUI,比如添加一些其他的按钮之类的东西?
[/Quote]
两种方法
1.纯粹靠代码,CreateWindowEx,能建立各种标准控件和各类窗口
2.用资源编辑器,跟MFC一样,可以拖放,只是不能像MFC那样自动加响应函数和消息循环而已
BoredNight 2011-07-11
  • 打赏
  • 举报
回复
“有无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用”
这个问题解决了,是要把设置里面的console改成windows才能让winmain不出错。

谢谢抄书小儿,再问下win32项目里面怎么再改GUI,比如添加一些其他的按钮之类的东西?

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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