windows 窗口
我的窗口名字是乱码,请问是我编译器的设置问题还是代码问题,请各位帮帮忙。
下面是我的代码。
//#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers// Windows Header Files:#include <windows.h> // C RunTime Header Files#include <stdlib.h>#include <malloc.h>#include <memory.h>#include <tchar.h>HWND hWnd=NULL; // 保存 Windows 分配给程序的窗口句柄,它是全局的LRESULT APIENTRY MyWndProc(HWND,UINT,WPARAM,LPARAM);void MyMsgLoop();int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ //LPCTSTR tt;// wchar_t * tt= ""; char clsName[]="myWnd";//{'m','y','W','n','d'}; WNDCLASS wc; wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW; wc.lpfnWndProc = MyWndProc; wc.cbClsExtra = 0L; wc.cbWndExtra = 0L; wc.hInstance = hInstance; wc.hIcon = NULL; wc.hCursor = NULL; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); wc.lpszMenuName = NULL; wc.lpszClassName = clsName; RegisterClass(&wc); hWnd = CreateWindow(clsName, clsName, WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, 100, 100, 400, 300, NULL, NULL, hInstance, NULL); // 创建窗口 ShowWindow( hWnd, SW_SHOWDEFAULT ); // 显示窗口 UpdateWindow( hWnd ); // 刷新窗口 MyMsgLoop(); // 进入消息循环 return 0;}LRESULT APIENTRY MyWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam ) {// 消息处理 switch(message) { case WM_CREATE: // 当收到建立窗口的消息时,进行处理... //MessageBox(NULL,"窗口创建的时候","消息提示",MB_OK|MB_ICONEXCLAMATION); return 0; break; case WM_CLOSE: // 当收到关闭窗口的消息时,进行处理... MessageBox(NULL,"windows closed","message tip",MB_OK|MB_ICONEXCLAMATION); PostQuitMessage(0); return 0; break; case WM_SIZE: // 当窗口尺寸变化时,进行处理... MessageBox(NULL,"windows size change","message tip",MB_OK|MB_ICONEXCLAMATION); return 0; break; case WM_DESTROY: // 当退出消息的时候,进行处理... MessageBox(NULL,"exist","message tip",MB_OK|MB_ICONEXCLAMATION); PostQuitMessage(0); return 0; break; case WM_KEYUP: // 当收到按ESC键的消息时,(如果当前是全屏模式,必须要加入退出方式) switch (wParam) { case VK_ESCAPE: MessageBox(NULL,"press ESC key","message tip",MB_OK|MB_ICONEXCLAMATION); PostQuitMessage(0); return 0; break; } default: break; } return (DefWindowProc(hWnd, message, wParam, lParam));}void MyMsgLoop() { MSG msg; BOOL receiveMessage; PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE); while(msg.message != WM_QUIT) { // message loop receiveMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE); if(receiveMessage) { // receive message TranslateMessage(&msg); DispatchMessage(&msg); } }}wchar_t clsName[] = L"myWnd"; hWnd = CreateWindowW(clsName, clsName,...
[解决办法]
LZ是用unicode还是多字节模式?
试试TEXT()这个宏呢
[解决办法]
在 hWnd = CreateWindow(clsName,
clsName,这个 用TEXT() 就可以了。。
[解决办法]
wchar_t clsName[] = L"myWnd";
unicode 问题