小编Tom*_*law的帖子

打开文件对话框Windows API

如何使用直接的C++和Windows API在Windows上显示"打开文件"对话框?我正在尝试加载要在屏幕上显示的图像.

c++ windows api

11
推荐指数
1
解决办法
4万
查看次数

对struct方法中的借用错误感到困惑

我正在尝试为游戏中的实体系统编写一些代码,但是我收到了这个错误所以我把代码煮成了同样的东西,我在实际代码中得到了同样的错误.

我不明白为什么编译器告诉我self.my_list在函数baz完成时引用超出范围.

我的锈版是 rustc 1.3.0 (9a92aaf19 2015-09-15)

for循环结束时,我会认为它超出了范围?

struct Foo {
    name : &'static str,
}

struct Bar {
    my_list : Vec<Foo>,
}

impl Bar {
    fn New() -> Bar {
        let mut new_instance = Bar { my_list : vec!() };
        new_instance.my_list.push(Foo { name : "foo1" });
        new_instance.my_list.push(Foo { name : "foo2" });
        new_instance.my_list.push(Foo { name : "foo3" });
        return new_instance;
    }

    fn Baz(&mut self, name : &'static str) -> Option<&Foo> {
        for x in …
Run Code Online (Sandbox Code Playgroud)

rust

6
推荐指数
1
解决办法
146
查看次数

如何清除命令行?

是否有Rust等效system于C / C ++标准库中的函数?具体来说,我试图用来cls清除命令行。

rust

5
推荐指数
1
解决办法
2197
查看次数

短文件名的最佳字符串哈希函数

对于像字符串这样的文件名,最好的字符串哈希函数是什么?字符串类似于:

pics/test.pic
maps/test.map
materials/metal.mtl
Run Code Online (Sandbox Code Playgroud)

c++ string hash

2
推荐指数
1
解决办法
3901
查看次数

OpenGL - 屏幕上没有任何内容

我正在使用Windows 7和VC++ 2010

我试图在屏幕上绘制一个简单的点,但它没有显示.屏幕清除为黑色,所以我知道我有一个有效的OpenGL上下文等...

基本上我的OpenGL代码归结为此(此时我没有深度缓冲区):

glClear( GL_COLOR_BUFFER_BIT );

glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 45.0, 1018.0 / 743.0, 5.0, 999.0 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();

glColor4f( 1, 1, 1, 1 );
glPointSize( 100 );
glBegin( GL_POINTS );
glVertex2i( 0, 0 );
glEnd();

SwapBuffers( hdc );
Run Code Online (Sandbox Code Playgroud)

OpenGL的初始化代码是这样的:

glClearColor( 0, 0, 0, 1 );
glShadeModel( GL_SMOOTH );
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
Run Code Online (Sandbox Code Playgroud)

问题是屏幕上没有任何内容,唯一发生的事情是屏幕被清除.

c opengl

2
推荐指数
1
解决办法
3796
查看次数

where语句的Haskell语法错误

我正在写一些Haskell代码来学习语言,我遇到了语法错误:

Vec2.hs:33:27: parse error on input '='

我在这里写的代码如下.错误指向第二个术语vec2Normalize iLength = ...我没有看到语法错误

-- Get the inverse length of v and multiply the components by it
-- Resulting in the normalized form of v
vec2Normalize :: Vec2 -> Vec2
vec2Normalize v@(x,y) = (x * iLength, y * iLength)
    where length = vec2Length v
          iLength = if length == 0 then 1 else (1 / length)
Run Code Online (Sandbox Code Playgroud)

syntax haskell

2
推荐指数
1
解决办法
403
查看次数

快速找到4的倍数

有没有使用%运算符(在C++中)找到32位整数是4的倍数的快速方法?

c++ integer

1
推荐指数
1
解决办法
275
查看次数

比较给定宽度和高度的纵横比

给定屏幕尺寸列表,如何检测哪些屏幕尺寸为4:3 16:9?我可以使用宽度/高度来获得它但是对于16:9尺寸我有时会得到1.778,有时由于舍入误差我得到1.777778.

c++ aspect-ratio

1
推荐指数
1
解决办法
2379
查看次数

使用可变状态在haskell中实现主循环

我正在尝试在Haskell中实现一个主循环,在CI中会像这样写:

EntityInteraction *frame(Entity *eList, EntityInteraction *iList) {
    parseInteractions(eList, iList);
    return simulateEntities(eList);
}

int main() {
    Entity eList[] = {...}
    EntityInteraction *iList = NULL;
    while(true) {
        iList = frame(eList, iList);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我试图通过使帧成为递归函数在haskell中复制它:

frame :: [Entity] -> [EntityInteraction] -> IO ()
frame eList iList = do
    frame (parseInteractions iList eList) (simulateEntities eList)

main :: IO ()
main = do
    let entList = [...]
    frame entList []
Run Code Online (Sandbox Code Playgroud)

但这只会导致堆栈溢出如预期的那样,所以我的问题是在haskell中使用可变状态执行主循环的propper方法是什么?

(我已经在C编程作为业余爱好4年了,我刚开始学习haskell)

haskell program-entry-point loops

0
推荐指数
1
解决办法
322
查看次数

lambda中的语法错误

我没有看到错误,除非我遗漏了什么.

loadFiles :: FilePath -> IO [B.ByteString]
loadFiles dir = do
        filePaths <- (getDirectoryContents dir)
        mapM (\x loadFile (dir ++ x)) filePaths
Run Code Online (Sandbox Code Playgroud)

我收到了错误 main.hs:33:37: Parse error in pattern: dir ++ x

lambda haskell

0
推荐指数
1
解决办法
87
查看次数

折叠会产生一个空列表

我试图让这会变成一个功能[1..10][1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10].到目前为止prepend,我将在列表的开头添加一些相同的元素:

-- prepend value num times to the start of list (eg: prepend [] 5 1 = [1,1,1,1,1]
prepend :: [a] -> Int -> a -> [a]
prepend [] _ _ = []
prepend list 0 _ = list
prepend list num value = prepend (value : list) (num - 1) value
Run Code Online (Sandbox Code Playgroud)

要创建我正在使用的最终列表foldl:

foldl (\acc x -> (prepend acc 2 x)) [] [1..10]

我希望它能够通过[1..10],并为每个元素添加2个x到acc,但当我把它放入GHCI时我才回来[]

我是来自C/C++背景的Haskell的新手

haskell fold

0
推荐指数
1
解决办法
85
查看次数

标签 统计

c++ ×4

haskell ×4

rust ×2

api ×1

aspect-ratio ×1

c ×1

fold ×1

hash ×1

integer ×1

lambda ×1

loops ×1

opengl ×1

program-entry-point ×1

string ×1

syntax ×1

windows ×1