vs做Windows桌面应用程序开发时窗口出现问题

Program120 2017-09-02 08:31:32

// 源码
//

#include "stdafx.h"
#include "WindowsProject2.h"
#include "windows.h"
#include "resource.h"

#define MAX_LOADSTRING 100

BOOL InitApplication(HINSTANCE hIstance);
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow);
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK About(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam);
// 全局变量:
HINSTANCE _hInst; // 当前实例
HWND _hWnd;
WCHAR _szAppName[] = _T("Generic");
char _szTitle[] = "Geveric Sample Application"; // 标题栏文本
char szWindowClass[MAX_LOADSTRING]; // 主窗口类名

int CALLBACK WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{

UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);

// TODO: 在此放置代码。



// 执行应用程序初始化:
if (!InitApplication(hInstance))
return (FALSE);

if (!InitInstance (hInstance, nCmdShow))
return FALSE;
MSG msg;

// 主消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return ( msg.wParam);
}

//
//
// 函数:InitApplication
//
// 目的:产生窗口
//
BOOL InitApplication(HINSTANCE hIstance) {
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hIstance;
wc.hIcon = LoadIcon(hIstance, _T("jhouricon"));
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = _T("GenericMenu");
wc.lpszClassName = _szAppName;

return (RegisterClass(&wc));
}

//
//
// 函数:InitInstance
//
// 目的:产生窗口
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {
_hInst = hInstance; //储存为全局变量,方便使用。
_hWnd = CreateWindow(
(LPCWSTR)_szAppName,
(LPCWSTR)_szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if (!_hWnd)
return (false);

ShowWindow(_hWnd, nCmdShow);
UpdateWindow(_hWnd);
return (TRUE);
}

//
// 函数: WndProc
//
// 目的: 窗口函数。
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam) {
int wmId, wmEvent;
switch (message) {
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDM_ABOUT:
DialogBox(_hInst,
_T("AboutBox"), //对话框资源名称
hWnd, //父窗口
(DLGPROC)About); //对话框函数名称
break;

case IDM_EXIT:
//使用者想结束程序。处理方式与 WM_CLOSE 相同。
DestroyWindow(hWnd);
break;

default:
return (DefWindowProc(hWnd, message, wParam, lParam));
}
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default :
return DefWindowProc(hWnd, message, wParam, lParam);
}
return (0);
}

//
// 函数: About
//
// 目的: 对话框函数。
//
LRESULT CALLBACK About(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam) {
UNREFERENCED_PARAMETER(lParam);
switch (message) {
case WM_INITDIALOG:
return (TRUE);
case WM_COMMAND:
if (LOWORD(wParam) == IDOK
|| LOWORD(wParam) == IDCANCEL) {
EndDialog(hDlg, true);
return (true);
}
break;
}
return (FALSE);
}

...全文
905 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghost5216 2017-09-04
  • 打赏
  • 举报
回复
引用 2 楼 qq_38900749 的回复:
[quote=引用 1 楼 ghost5216 的回复:] char _szTitle[] = "Geveric Sample Application"; // 标题栏文本 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { _hInst = hInstance; //储存为全局变量,方便使用。 _hWnd = CreateWindow( (LPCWSTR)_szAppName, (LPCWSTR)_szTitle, wchar_t _szTitle[] = L"Geveric Sample Application";
啊 这里没注意 忘记改回来了 还有个问题如果我数组中存放中文的话最后显示会乱码 有没有什么解决方法?图如下 [/quote] setlocale(LC_ALL,"Chinese-simplified");
赵4老师 2017-09-03
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
Program120 2017-09-02
  • 打赏
  • 举报
回复
引用 1 楼 ghost5216 的回复:
char _szTitle[] = "Geveric Sample Application"; // 标题栏文本


BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {
_hInst = hInstance; //储存为全局变量,方便使用。
_hWnd = CreateWindow(
(LPCWSTR)_szAppName,
(LPCWSTR)_szTitle,

wchar_t _szTitle[] = L"Geveric Sample Application";

啊 这里没注意 忘记改回来了 还有个问题如果我数组中存放中文的话最后显示会乱码 有没有什么解决方法?图如下
ghost5216 2017-09-02
  • 打赏
  • 举报
回复
char _szTitle[] = "Geveric Sample Application"; // 标题栏文本 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { _hInst = hInstance; //储存为全局变量,方便使用。 _hWnd = CreateWindow( (LPCWSTR)_szAppName, (LPCWSTR)_szTitle, wchar_t _szTitle[] = L"Geveric Sample Application";
ooolinux 2017-09-02
  • 打赏
  • 举报
回复
SDK方式编写Windows应用程序已经过时了,了解原理就可以了(主要是消息机制)。 —————————— 图形用户界面(GUI)编程可以学习C++ Builder,架构先进(和C#一样拖控件),入门比较容易。 C++ Builder的较新版本——RAD Studio XE3以上版本添加对iOS和Android的支持工具包,让开发者编写的Delphi/C++应用可以同时在Windows、OS X、iOS和Android平台上运行。现在最新版本是RAD Studio 10.2。 仅供参考: 初学者学习C++ Builder第一个程序(模拟聊天室),经典! http://blog.163.com/tab_98/blog/static/11924097201693033057497/ C++ Builder绘图示例(模拟时钟) http://blog.163.com/tab_98/blog/static/11924097201611324819376/ 从C语言的菜单界面管理系统到C++ Builder的图形用户界面,一个简单的电话簿Demo例子 http://blog.163.com/tab_98/blog/static/1192409720158673337998/ C++ Builder写的《ZEC 纸牌游戏21点》 http://blog.163.com/tab_98/blog/static/119240972016115113039304/ C++ Builder写的《ZEC 僵尸版打地鼠》 http://blog.163.com/tab_98/blog/static/11924097201601084117748/ C++ Builder写的《ZEC 推箱子》 http://blog.163.com/tab_98/blog/static/11924097201612011839642/ 书籍推荐: 《C++Builder 6程序设计教程(第二版)》 (陆卫忠,刘文亮 等编著 /2011-04-01 /科学出版社)(当当网) 《C++Builder 6编程实例精解》(赵明现),PDF,是数字版的,非扫描版的,里面还有一个俄罗斯方块游戏的完整实现。 《精彩C++Builder 6程序设计》(台湾 吴逸贤),里面有10几个简单小游戏的实现,可以自己看懂以后再重写,才是自己掌握的。 《C++ Builder 5高级编程实例精解》(刘滨 编著)都是较大的实用的程序。

15,979

社区成员

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

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