unsigned int
当我溢出它时会包含什么?具体来说,我想用两个unsigned int
s 进行乘法:unsigned int
乘法结束后会有什么?
unsigned int someint = 253473829*13482018273;
Run Code Online (Sandbox Code Playgroud) 有网站我可以去网上运行C++代码吗?我见过一些编译器,但有没有一个也可以从中接收输入cin
?我想要一个基本上可以在线托管C++ .exe的版本,更可取的是它是否像VC++平台一样.
到目前为止,我有代码从ifstream读取unsigned char:
ifstream in;
unsigned char temp;
in.open ("RANDOMFILE", ios::in | ios::binary);
in.read (&temp, 1);
in.close ();
Run Code Online (Sandbox Code Playgroud)
它是否正确?我还尝试将一个unsigned char写入ofstream:
ofstream out;
unsigned char temp;
out.open ("RANDOMFILE", ios::out | ios::binary);
out.write (&static_cast<char>(temp), 1);
out.close ();
Run Code Online (Sandbox Code Playgroud)
但是我写错了以下错误:
error C2102: '&' requires l-value
Run Code Online (Sandbox Code Playgroud)
这个错误用于阅读:
error C2664: 'std::basic_istream<_Elem,_Traits>::read' : cannot convert parameter 1 from 'unsigned char *' to 'char *'
Run Code Online (Sandbox Code Playgroud)
如果有人能告诉我我的代码有什么问题,或者我如何从fstream读取和写入未签名的字符,我们将不胜感激.
标准窗口过程函数采用此原型:
LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
Run Code Online (Sandbox Code Playgroud)
当一个消息如WM_MOUSEMOVE
或WM_CHAR
,该WndProc
函数将接收来自该窗口的消息,以及任何额外的参数,这些参数将与msg和wParam/lParam一起使用.
我现在拥有的是一堂课.说
class Random
{
public:
void Initialize ();
private:
void Draw ();
HWND hWnd;
friend LRESULT CALLBACK RandomProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
};
Run Code Online (Sandbox Code Playgroud)
在之后hWnd
进行初始化,并通过创建Initialize ()
,它会发送消息,如WM_LBUTTONDOWN
来RandomProc
.一旦接收到消息,我想RandomProc
用Draw ()
重画类的窗口Random
.
问题是,我将有多个Random
变量,每个变量都有一个窗口.所有窗口都会发送消息RandomProc
,并希望它重绘相应的窗口hWnd
.我不知道哪个随机变量基于hWnd参数发送消息,也不知道msg/wParam/lParam,因此无法访问相应的Draw ()
函数,也无法重绘正确的窗口.
有没有办法在每次发送消息时将指针传递给窗口的类,或者是否有另一种方法来访问其hWnd发送消息的Random类?
如果您看一下Visual Studio 2012,您会注意到如果使用鼠标滚轮,鼠标下方的窗口将滚动,而不是聚焦窗口.也就是说,如果您将光标放在代码编辑器中,并将鼠标移到"解决方案资源管理器"窗口并滚动,则解决方案资源管理器将滚动,而不是代码编辑器.但是,WM_MOUSEWHEEL消息只会被发送到焦点窗口,因此在这种情况下,代码编辑器.我们如何实现我们的程序,使WM_MOUSEWHEEL消息滚动鼠标下的窗口,这是直观的,而不是聚焦窗口?
这个问题长期困扰着我.例如,代码
ifstream in;
char temp;
int a;
in.open ("Random.txt");
for (a = 0;a < 10000;a++)
in.read (&temp, 1);
in.close ();
Run Code Online (Sandbox Code Playgroud)
工作正常,直到ifstream
遇到替换字符(ASCII = 26).然后,对于所有后续角色,ifstream::read
给我temp = -1
.我真的不希望这种情况发生,而是希望它继续从文件中读取字符而不是-1
.我做错了什么?
我有一个程序,应该输出有关其内存泄漏的信息.但是,它不起作用.以下是该计划:
#include <crtdbg.h>
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
FILE *out_file;
int *a = new int;
//Redirect the error stream to a file.
freopen_s (&out_file, "Memory Leaks.txt", "w", stderr);
//Turn on debugging for memory leaks. This is automatically turned off when the build is Release.
_CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtSetReportMode (_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile (_CRT_WARN, _CRTDBG_FILE_STDERR);
_CrtSetReportMode (_CRT_ERROR, _CRTDBG_MODE_FILE);
_CrtSetReportFile (_CRT_ERROR, _CRTDBG_FILE_STDERR);
_CrtSetReportMode (_CRT_ASSERT, _CRTDBG_MODE_FILE);
_CrtSetReportFile (_CRT_ASSERT, _CRTDBG_FILE_STDERR);
return …
Run Code Online (Sandbox Code Playgroud) 我有一个窗口,我想像其他任何窗口一样将边界实现为调整边界大小。从评论和答案中获取建议,我重新编写了代码。对于WM_GETMINMAXINFO,我有:
MINMAXINFO *min_max = reinterpret_cast<MINMAXINFO *>(lparam);
min_max->ptMinTrackSize.x = MINX;
min_max->ptMinTrackSize.y = MINY;
Run Code Online (Sandbox Code Playgroud)
MINX和MINY是我希望窗口最小的尺寸。对于WM_NCHITTEST,我有:
RECT wnd_rect;
int x, y;
GetWindowRect (window, &wnd_rect);
x = GET_X_LPARAM (lparam) - wnd_rect.left;
y = GET_Y_LPARAM (lparam) - wnd_rect.top;
if (x >= BORDERWIDTH && x <= wnd_rect.right - wnd_rect.left - >BORDERWIDTH && y >= BORDERWIDTH && y <= TITLEBARWIDTH)
return HTCAPTION;
else if (x < BORDERWIDTH && y < BORDERWIDTH)
return HTTOPLEFT;
else if (x > wnd_rect.right - wnd_rect.left - BORDERWIDTH && y < BORDERWIDTH)
return …
Run Code Online (Sandbox Code Playgroud) 以下是我的代码的一部分.每次运行程序时,CreateWindowEx
SPanel都会返回NULL
,触发错误.任何人都可以看到这段代码有什么问题吗?
SPanelProc
并且MainWndProc
已经宣布,并且是原型LRESULT CALLBACK SPanelProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
.
我正在编程的环境是Visual C++ 2010.
为什么CreateWindowEx
总是回来NULL
?
#include <Windows.h>
#include <WindowsX.h>
LRESULT CALLBACK SPanelProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_MOUSEMOVE:
break;
}
return 0;
}
void Init ()
{
HWND child;
HINSTANCE hInstance = (HINSTANCE)(GetWindowLongPtr (parent, GWLP_HINSTANCE));
WNDCLASSEX wc;
const char PanelClassName[] = "SPanel"; //ClassName of the panel. Do not …
Run Code Online (Sandbox Code Playgroud) c++ winapi visual-studio-2010 createwindowex visual-c++-2010
标题非常自我解释.我想将一个类型double *
转换为一个类型int *
.我意识到我可以使用C型(int *)
转换来做我想要的,但是有没有办法使用C++类型转换static_cast
等进行此类转换?
所以我想知道我是否可以在for循环的声明中声明一个变量.这段代码有效吗?
for (int a = 0;a < len + 1;a++);
Run Code Online (Sandbox Code Playgroud)
在什么范围a
内存在?它会在for循环之外无效,还是我仍然可以访问它?
另外,我是否可以在单个for循环语句中声明或初始化2个变量?
for (int a = 0, b = len + 1;a < b;a++);
Run Code Online (Sandbox Code Playgroud)
这是一个有效的陈述吗?